home *** CD-ROM | disk | FTP | other *** search
open in:
MacOS 8.1
|
Win98
|
DOS
browse contents |
view JSON data
|
view as text
This file was processed as: SHell self-extracting ARchive
(archive/shar).
Confidence | Program | Detection | Match Type | Support
|
---|
100%
| dexvert
| SHell self-extracting ARchive (archive/shar)
| magic
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| C source, ASCII text
| default
| |
100%
| checkBytes
| Printable ASCII
| default
| |
100%
| perlTextCheck
| Likely Text (Perl)
| default
| |
100%
| siegfried
| fmt/329 Shell Archive Format
| default
| |
100%
| detectItEasy
| Format: plain text[LF]
| default (weak)
|
|
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 23 46 72 6f 6d 3a 20 67 | 64 6d 72 40 64 63 73 2e |#From: g|dmr@dcs.|
|00000010| 65 64 2e 61 63 2e 75 6b | 0a 23 44 61 74 65 3a 20 |ed.ac.uk|.#Date: |
|00000020| 4d 6f 6e 2c 20 32 36 20 | 41 70 72 20 39 33 20 31 |Mon, 26 |Apr 93 1|
|00000030| 31 3a 30 33 3a 35 37 20 | 42 53 54 0a 23 4d 65 73 |1:03:57 |BST.#Mes|
|00000040| 73 61 67 65 2d 49 64 3a | 20 3c 35 34 34 37 2e 39 |sage-Id:| <5447.9|
|00000050| 33 30 34 32 36 31 30 30 | 33 40 62 72 75 72 61 79 |30426100|3@bruray|
|00000060| 2e 64 63 73 2e 65 64 2e | 61 63 2e 75 6b 3e 0a 23 |.dcs.ed.|ac.uk>.#|
|00000070| 54 6f 3a 20 50 61 75 6c | 20 41 20 56 69 78 69 65 |To: Paul| A Vixie|
|00000080| 20 3c 76 69 78 69 65 3e | 0a 23 53 75 62 6a 65 63 | <vixie>|.#Subjec|
|00000090| 74 3a 20 52 65 3a 20 73 | 65 6e 64 20 6d 65 20 79 |t: Re: s|end me y|
|000000a0| 6f 75 72 20 74 6f 6f 6c | 73 0a 23 0a 23 49 6e 20 |our tool|s.#.#In |
|000000b0| 61 72 74 69 63 6c 65 20 | 3c 39 33 30 34 32 35 31 |article |<9304251|
|000000c0| 39 32 38 2e 41 41 30 39 | 37 37 30 40 63 6f 67 6e |928.AA09|770@cogn|
|000000d0| 69 74 69 6f 6e 2e 70 61 | 2e 64 65 63 2e 63 6f 6d |ition.pa|.dec.com|
|000000e0| 3e 2c 20 79 6f 75 20 77 | 72 69 74 65 3a 0a 23 3e |>, you w|rite:.#>|
|000000f0| 20 2e 2e 2e 20 69 66 20 | 79 6f 75 20 68 61 76 65 | ... if |you have|
|00000100| 20 73 6f 6d 65 74 68 69 | 6e 67 20 77 68 69 63 68 | somethi|ng which|
|00000110| 20 63 6f 6e 76 65 72 74 | 73 20 74 6f 2f 66 72 6f | convert|s to/fro|
|00000120| 6d 20 2f 65 74 63 2f 68 | 6f 73 74 73 20 74 6f 2f |m /etc/h|osts to/|
|00000130| 66 72 6f 6d 0a 23 3e 20 | 68 6f 73 74 73 2e 74 78 |from.#> |hosts.tx|
|00000140| 74 20 74 6f 2f 66 72 6f | 6d 20 7a 6f 6e 65 20 66 |t to/fro|m zone f|
|00000150| 69 6c 65 73 20 2e 2e 2e | 0a 23 0a 23 48 65 72 65 |iles ...|.#.#Here|
|00000160| 20 28 61 70 70 65 6e 64 | 65 64 29 20 69 73 20 6d | (append|ed) is m|
|00000170| 79 20 2f 65 74 63 2f 68 | 6f 73 74 73 2d 74 6f 2d |y /etc/h|osts-to-|
|00000180| 7a 6f 6e 65 66 69 6c 65 | 73 20 63 6f 6e 76 65 72 |zonefile|s conver|
|00000190| 74 65 72 2e 20 20 54 68 | 65 72 65 20 77 65 72 65 |ter. Th|ere were|
|000001a0| 20 61 20 63 6f 75 70 6c | 65 0a 23 6f 66 20 72 65 | a coupl|e.#of re|
|000001b0| 61 73 6f 6e 73 20 49 20 | 77 72 6f 74 65 20 69 74 |asons I |wrote it|
|000001c0| 20 28 61 70 61 72 74 20 | 66 72 6f 6d 20 2f 65 74 | (apart |from /et|
|000001d0| 63 2f 68 6f 73 74 73 20 | 66 6f 72 6d 61 74 20 62 |c/hosts |format b|
|000001e0| 65 69 6e 67 20 77 65 6c | 6c 20 75 6e 64 65 72 73 |eing wel|l unders|
|000001f0| 74 6f 6f 64 20 62 79 0a | 23 6f 75 72 20 73 79 73 |tood by.|#our sys|
|00000200| 74 65 6d 20 73 75 70 70 | 6f 72 74 20 70 65 6f 70 |tem supp|ort peop|
|00000210| 6c 65 29 3a 0a 23 0a 23 | 09 69 74 20 6f 6e 6c 79 |le):.#.#|.it only|
|00000220| 20 67 65 6e 65 72 61 74 | 65 73 20 73 74 75 66 66 | generat|es stuff|
|00000230| 20 66 6f 72 20 63 6f 6e | 66 69 67 75 72 65 64 2d | for con|figured-|
|00000240| 69 6e 20 6e 65 74 77 6f | 72 6b 73 20 28 77 68 69 |in netwo|rks (whi|
|00000250| 63 68 20 64 6f 65 73 6e | 27 74 0a 23 09 61 63 74 |ch doesn|'t.#.act|
|00000260| 75 61 6c 6c 79 20 6d 61 | 74 74 65 72 20 74 6f 20 |ually ma|tter to |
|00000270| 75 73 20 6e 6f 77 2c 20 | 62 75 74 20 64 69 64 20 |us now, |but did |
|00000280| 61 74 20 74 68 65 20 74 | 69 6d 65 20 49 20 77 72 |at the t|ime I wr|
|00000290| 6f 74 65 20 69 74 29 3b | 20 61 6e 64 0a 23 0a 23 |ote it);| and.#.#|
|000002a0| 09 69 74 20 64 6f 65 73 | 20 73 6f 6d 65 74 68 69 |.it does| somethi|
|000002b0| 6e 67 20 72 65 61 73 6f | 6e 61 62 6c 65 20 66 6f |ng reaso|nable fo|
|000002c0| 72 20 6d 75 6c 74 69 2d | 68 6f 6d 65 64 20 68 6f |r multi-|homed ho|
|000002d0| 73 74 73 0a 23 0a 23 54 | 68 65 72 65 27 73 20 73 |sts.#.#T|here's s|
|000002e0| 6f 6d 65 20 64 6f 63 75 | 6d 65 6e 74 61 74 69 6f |ome docu|mentatio|
|000002f0| 6e 20 61 74 20 74 68 65 | 20 74 6f 70 20 6f 66 20 |n at the| top of |
|00000300| 74 68 65 20 73 6f 75 72 | 63 65 20 66 69 6c 65 2c |the sour|ce file,|
|00000310| 20 61 6e 64 20 61 6e 20 | 65 78 61 6d 70 6c 65 0a | and an |example.|
|00000320| 23 63 6f 6e 66 69 67 75 | 72 61 74 69 6f 6e 20 66 |#configu|ration f|
|00000330| 69 6c 65 20 28 77 68 69 | 63 68 20 68 61 70 70 65 |ile (whi|ch happe|
|00000340| 6e 73 20 74 6f 20 62 65 | 20 61 20 63 6f 70 79 20 |ns to be| a copy |
|00000350| 6f 66 20 6f 75 72 20 77 | 6f 72 6b 69 6e 67 20 6f |of our w|orking o|
|00000360| 6e 65 29 2e 0a 23 2d 2d | 20 0a 23 47 65 6f 72 67 |ne)..#--| .#Georg|
|00000370| 65 20 44 20 4d 20 52 6f | 73 73 2c 20 44 65 70 61 |e D M Ro|ss, Depa|
|00000380| 72 74 6d 65 6e 74 20 6f | 66 20 43 6f 6d 70 75 74 |rtment o|f Comput|
|00000390| 65 72 20 53 63 69 65 6e | 63 65 2c 20 55 6e 69 76 |er Scien|ce, Univ|
|000003a0| 65 72 73 69 74 79 20 6f | 66 20 45 64 69 6e 62 75 |ersity o|f Edinbu|
|000003b0| 72 67 68 0a 23 20 20 20 | 20 20 4b 69 6e 67 73 20 |rgh.# | Kings |
|000003c0| 42 75 69 6c 64 69 6e 67 | 73 2c 20 4d 61 79 66 69 |Building|s, Mayfi|
|000003d0| 65 6c 64 20 52 6f 61 64 | 2c 20 45 64 69 6e 62 75 |eld Road|, Edinbu|
|000003e0| 72 67 68 2c 20 53 63 6f | 74 6c 61 6e 64 2c 20 45 |rgh, Sco|tland, E|
|000003f0| 48 39 20 33 4a 5a 0a 23 | 4d 61 69 6c 3a 20 67 64 |H9 3JZ.#|Mail: gd|
|00000400| 6d 72 40 64 63 73 2e 65 | 64 2e 61 63 2e 75 6b 20 |mr@dcs.e|d.ac.uk |
|00000410| 20 20 20 20 20 56 6f 69 | 63 65 3a 20 30 33 31 2d | Voi|ce: 031-|
|00000420| 36 35 30 20 35 31 34 37 | 20 20 20 20 20 20 46 61 |650 5147| Fa|
|00000430| 78 3a 20 30 33 31 2d 36 | 36 37 20 37 32 30 39 0a |x: 031-6|67 7209.|
|00000440| 0a 23 21 20 2f 62 69 6e | 2f 73 68 0a 23 20 54 68 |.#! /bin|/sh.# Th|
|00000450| 69 73 20 69 73 20 61 20 | 73 68 65 6c 6c 20 61 72 |is is a |shell ar|
|00000460| 63 68 69 76 65 2e 20 20 | 52 65 6d 6f 76 65 20 61 |chive. |Remove a|
|00000470| 6e 79 74 68 69 6e 67 20 | 62 65 66 6f 72 65 20 74 |nything |before t|
|00000480| 68 69 73 20 6c 69 6e 65 | 2c 20 74 68 65 6e 20 75 |his line|, then u|
|00000490| 6e 70 61 63 6b 0a 23 20 | 69 74 20 62 79 20 73 61 |npack.# |it by sa|
|000004a0| 76 69 6e 67 20 69 74 20 | 69 6e 74 6f 20 61 20 66 |ving it |into a f|
|000004b0| 69 6c 65 20 61 6e 64 20 | 74 79 70 69 6e 67 20 22 |ile and |typing "|
|000004c0| 73 68 20 66 69 6c 65 22 | 2e 20 20 54 6f 20 6f 76 |sh file"|. To ov|
|000004d0| 65 72 77 72 69 74 65 20 | 65 78 69 73 74 69 6e 67 |erwrite |existing|
|000004e0| 0a 23 20 66 69 6c 65 73 | 2c 20 74 79 70 65 20 22 |.# files|, type "|
|000004f0| 73 68 20 66 69 6c 65 20 | 2d 63 22 2e 20 20 59 6f |sh file |-c". Yo|
|00000500| 75 20 63 61 6e 20 61 6c | 73 6f 20 66 65 65 64 20 |u can al|so feed |
|00000510| 74 68 69 73 20 61 73 20 | 73 74 61 6e 64 61 72 64 |this as |standard|
|00000520| 20 69 6e 70 75 74 20 76 | 69 61 0a 23 20 75 6e 73 | input v|ia.# uns|
|00000530| 68 61 72 2c 20 6f 72 20 | 62 79 20 74 79 70 69 6e |har, or |by typin|
|00000540| 67 20 22 73 68 20 3c 66 | 69 6c 65 22 2c 20 65 2e |g "sh <f|ile", e.|
|00000550| 67 2e 2e 20 20 49 66 20 | 74 68 69 73 20 61 72 63 |g.. If |this arc|
|00000560| 68 69 76 65 20 69 73 20 | 63 6f 6d 70 6c 65 74 65 |hive is |complete|
|00000570| 2c 20 79 6f 75 0a 23 20 | 77 69 6c 6c 20 73 65 65 |, you.# |will see|
|00000580| 20 74 68 65 20 66 6f 6c | 6c 6f 77 69 6e 67 20 6d | the fol|lowing m|
|00000590| 65 73 73 61 67 65 20 61 | 74 20 74 68 65 20 65 6e |essage a|t the en|
|000005a0| 64 3a 0a 23 09 09 22 45 | 6e 64 20 6f 66 20 73 68 |d:.#.."E|nd of sh|
|000005b0| 65 6c 6c 20 61 72 63 68 | 69 76 65 2e 22 0a 23 20 |ell arch|ive.".# |
|000005c0| 43 6f 6e 74 65 6e 74 73 | 3a 20 20 43 6f 6e 66 69 |Contents|: Confi|
|000005d0| 67 75 72 65 2d 65 78 61 | 6d 70 6c 65 20 4d 61 6b |gure-exa|mple Mak|
|000005e0| 65 66 69 6c 65 20 6d 61 | 6b 65 44 4e 53 2e 63 20 |efile ma|keDNS.c |
|000005f0| 6d 61 6b 65 48 53 2e 63 | 20 75 70 64 61 74 65 44 |makeHS.c| updateD|
|00000600| 4e 53 0a 23 20 57 72 61 | 70 70 65 64 20 62 79 20 |NS.# Wra|pped by |
|00000610| 62 69 6e 64 40 62 72 75 | 72 61 79 20 6f 6e 20 4d |bind@bru|ray on M|
|00000620| 6f 6e 20 41 70 72 20 32 | 36 20 31 30 3a 35 38 3a |on Apr 2|6 10:58:|
|00000630| 35 37 20 31 39 39 33 0a | 50 41 54 48 3d 2f 62 69 |57 1993.|PATH=/bi|
|00000640| 6e 3a 2f 75 73 72 2f 62 | 69 6e 3a 2f 75 73 72 2f |n:/usr/b|in:/usr/|
|00000650| 75 63 62 20 3b 20 65 78 | 70 6f 72 74 20 50 41 54 |ucb ; ex|port PAT|
|00000660| 48 0a 69 66 20 74 65 73 | 74 20 2d 66 20 43 6f 6e |H.if tes|t -f Con|
|00000670| 66 69 67 75 72 65 2d 65 | 78 61 6d 70 6c 65 20 2d |figure-e|xample -|
|00000680| 61 20 22 24 7b 31 7d 22 | 20 21 3d 20 22 2d 63 22 |a "${1}"| != "-c"|
|00000690| 20 3b 20 74 68 65 6e 20 | 0a 20 20 65 63 68 6f 20 | ; then |. echo |
|000006a0| 73 68 61 72 3a 20 57 69 | 6c 6c 20 6e 6f 74 20 6f |shar: Wi|ll not o|
|000006b0| 76 65 72 2d 77 72 69 74 | 65 20 65 78 69 73 74 69 |ver-writ|e existi|
|000006c0| 6e 67 20 66 69 6c 65 20 | 5c 22 43 6f 6e 66 69 67 |ng file |\"Config|
|000006d0| 75 72 65 2d 65 78 61 6d | 70 6c 65 5c 22 0a 65 6c |ure-exam|ple\".el|
|000006e0| 73 65 0a 65 63 68 6f 20 | 73 68 61 72 3a 20 45 78 |se.echo |shar: Ex|
|000006f0| 74 72 61 63 74 69 6e 67 | 20 5c 22 43 6f 6e 66 69 |tracting| \"Confi|
|00000700| 67 75 72 65 2d 65 78 61 | 6d 70 6c 65 5c 22 20 5c |gure-exa|mple\" \|
|00000710| 28 31 38 33 31 20 63 68 | 61 72 61 63 74 65 72 73 |(1831 ch|aracters|
|00000720| 5c 29 0a 73 65 64 20 22 | 73 2f 5e 58 2f 2f 22 20 |\).sed "|s/^X//" |
|00000730| 3e 43 6f 6e 66 69 67 75 | 72 65 2d 65 78 61 6d 70 |>Configu|re-examp|
|00000740| 6c 65 20 3c 3c 27 45 4e | 44 5f 4f 46 5f 43 6f 6e |le <<'EN|D_OF_Con|
|00000750| 66 69 67 75 72 65 2d 65 | 78 61 6d 70 6c 65 27 0a |figure-e|xample'.|
|00000760| 58 23 20 6d 61 6b 65 44 | 4e 53 20 63 6f 6e 66 69 |X# makeD|NS confi|
|00000770| 67 75 72 61 74 69 6f 6e | 20 66 69 6c 65 20 66 6f |guration| file fo|
|00000780| 72 20 63 73 20 26 20 63 | 73 31 0a 58 23 0a 58 23 |r cs & c|s1.X#.X#|
|00000790| 20 64 6f 6d 61 69 6e 73 | 20 2d 2d 20 66 6f 72 6d | domains| -- form|
|000007a0| 61 74 20 69 73 0a 58 23 | 22 30 2e 30 2e 30 2e 30 |at is.X#|"0.0.0.0|
|000007b0| 22 20 64 6f 6d 61 69 6e | 20 7a 6f 6e 65 2d 66 69 |" domain| zone-fi|
|000007c0| 6c 65 20 68 65 61 64 65 | 72 73 2d 66 69 6c 65 20 |le heade|rs-file |
|000007d0| 22 6f 74 68 65 72 22 2d | 7a 6f 6e 65 2d 66 69 6c |"other"-|zone-fil|
|000007e0| 65 20 4d 58 2d 66 69 6c | 65 0a 58 30 2e 30 2e 30 |e MX-fil|e.X0.0.0|
|000007f0| 2e 30 09 09 64 63 73 2e | 65 64 2e 61 63 2e 75 6b |.0..dcs.|ed.ac.uk|
|00000800| 20 4e 65 77 2f 7a 6f 6e | 65 2e 63 73 20 48 65 61 | New/zon|e.cs Hea|
|00000810| 64 65 72 73 2f 63 73 20 | 4e 65 77 2f 7a 6f 6e 65 |ders/cs |New/zone|
|00000820| 2e 63 73 2e 4c 0a 58 0a | 58 23 20 77 69 72 65 73 |.cs.L.X.|X# wires|
|00000830| 20 2d 2d 20 66 6f 72 6d | 61 74 20 69 73 0a 58 23 | -- form|at is.X#|
|00000840| 20 73 75 62 6e 65 74 20 | 6d 61 73 6b 20 7a 6f 6e | subnet |mask zon|
|00000850| 65 2d 66 69 6c 65 20 72 | 65 76 65 72 73 65 2d 68 |e-file r|everse-h|
|00000860| 65 61 64 65 72 73 2d 66 | 69 6c 65 20 64 6f 6d 61 |eaders-f|ile doma|
|00000870| 69 6e 0a 58 31 32 39 2e | 32 31 35 2e 33 36 2e 30 |in.X129.|215.36.0|
|00000880| 09 32 35 35 2e 32 35 35 | 2e 32 35 35 2e 30 09 2f |.255.255|.255.0./|
|00000890| 64 65 76 2f 6e 75 6c 6c | 20 20 20 20 20 2f 64 65 |dev/null| /de|
|000008a0| 76 2f 6e 75 6c 6c 09 09 | 64 63 73 2e 65 64 2e 61 |v/null..|dcs.ed.a|
|000008b0| 63 2e 75 6b 0a 58 31 32 | 39 2e 32 31 35 2e 35 36 |c.uk.X12|9.215.56|
|000008c0| 2e 30 09 32 35 35 2e 32 | 35 35 2e 32 35 35 2e 30 |.0.255.2|55.255.0|
|000008d0| 09 2f 64 65 76 2f 6e 75 | 6c 6c 20 20 20 20 20 2f |./dev/nu|ll /|
|000008e0| 64 65 76 2f 6e 75 6c 6c | 09 09 64 63 73 2e 65 64 |dev/null|..dcs.ed|
|000008f0| 2e 61 63 2e 75 6b 0a 58 | 23 0a 58 31 32 39 2e 32 |.ac.uk.X|#.X129.2|
|00000900| 31 35 2e 31 36 30 2e 30 | 09 32 35 35 2e 32 35 35 |15.160.0|.255.255|
|00000910| 2e 32 35 35 2e 30 09 4e | 65 77 2f 7a 6f 6e 65 2e |.255.0.N|ew/zone.|
|00000920| 31 36 30 20 20 48 65 61 | 64 65 72 73 2f 72 65 76 |160 Hea|ders/rev|
|00000930| 65 72 73 65 20 20 20 64 | 63 73 2e 65 64 2e 61 63 |erse d|cs.ed.ac|
|00000940| 2e 75 6b 0a 58 31 32 39 | 2e 32 31 35 2e 36 34 2e |.uk.X129|.215.64.|
|00000950| 30 09 32 35 35 2e 32 35 | 35 2e 32 35 35 2e 30 09 |0.255.25|5.255.0.|
|00000960| 4e 65 77 2f 7a 6f 6e 65 | 2e 36 34 20 20 20 48 65 |New/zone|.64 He|
|00000970| 61 64 65 72 73 2f 72 65 | 76 65 72 73 65 20 20 20 |aders/re|verse |
|00000980| 64 63 73 2e 65 64 2e 61 | 63 2e 75 6b 0a 58 31 32 |dcs.ed.a|c.uk.X12|
|00000990| 39 2e 32 31 35 2e 33 32 | 2e 30 09 32 35 35 2e 32 |9.215.32|.0.255.2|
|000009a0| 35 35 2e 32 35 35 2e 30 | 09 4e 65 77 2f 7a 6f 6e |55.255.0|.New/zon|
|000009b0| 65 2e 33 32 20 20 20 48 | 65 61 64 65 72 73 2f 72 |e.32 H|eaders/r|
|000009c0| 65 76 65 72 73 65 20 20 | 20 64 63 73 2e 65 64 2e |everse | dcs.ed.|
|000009d0| 61 63 2e 75 6b 0a 58 31 | 32 39 2e 32 31 35 2e 39 |ac.uk.X1|29.215.9|
|000009e0| 36 2e 30 09 32 35 35 2e | 32 35 35 2e 32 35 35 2e |6.0.255.|255.255.|
|000009f0| 30 09 4e 65 77 2f 7a 6f | 6e 65 2e 39 36 20 20 20 |0.New/zo|ne.96 |
|00000a00| 48 65 61 64 65 72 73 2f | 72 65 76 65 72 73 65 20 |Headers/|reverse |
|00000a10| 20 20 64 63 73 2e 65 64 | 2e 61 63 2e 75 6b 0a 58 | dcs.ed|.ac.uk.X|
|00000a20| 31 32 39 2e 32 31 35 2e | 32 32 34 2e 30 20 20 20 |129.215.|224.0 |
|00000a30| 32 35 35 2e 32 35 35 2e | 32 35 35 2e 30 20 20 20 |255.255.|255.0 |
|00000a40| 4e 65 77 2f 7a 6f 6e 65 | 2e 32 32 34 20 20 48 65 |New/zone|.224 He|
|00000a50| 61 64 65 72 73 2f 72 65 | 76 65 72 73 65 20 20 20 |aders/re|verse |
|00000a60| 64 63 73 2e 65 64 2e 61 | 63 2e 75 6b 0a 58 31 32 |dcs.ed.a|c.uk.X12|
|00000a70| 39 2e 32 31 35 2e 32 31 | 36 2e 30 09 32 35 35 2e |9.215.21|6.0.255.|
|00000a80| 32 35 35 2e 32 35 35 2e | 30 09 4e 65 77 2f 7a 6f |255.255.|0.New/zo|
|00000a90| 6e 65 2e 32 31 36 20 20 | 48 65 61 64 65 72 73 2f |ne.216 |Headers/|
|00000aa0| 72 65 76 65 72 73 65 20 | 20 20 64 63 73 2e 65 64 |reverse | dcs.ed|
|00000ab0| 2e 61 63 2e 75 6b 0a 58 | 31 32 39 2e 32 31 35 2e |.ac.uk.X|129.215.|
|00000ac0| 32 31 32 2e 30 09 32 35 | 35 2e 32 35 35 2e 32 35 |212.0.25|5.255.25|
|00000ad0| 35 2e 30 09 4e 65 77 2f | 7a 6f 6e 65 2e 32 31 32 |5.0.New/|zone.212|
|00000ae0| 20 20 48 65 61 64 65 72 | 73 2f 72 65 76 65 72 73 | Header|s/revers|
|00000af0| 65 09 64 63 73 2e 65 64 | 2e 61 63 2e 75 6b 0a 58 |e.dcs.ed|.ac.uk.X|
|00000b00| 31 32 39 2e 32 31 35 2e | 31 32 34 2e 30 09 32 35 |129.215.|124.0.25|
|00000b10| 35 2e 32 35 35 2e 32 35 | 35 2e 30 09 4e 65 77 2f |5.255.25|5.0.New/|
|00000b20| 7a 6f 6e 65 2e 31 32 34 | 20 20 48 65 61 64 65 72 |zone.124| Header|
|00000b30| 73 2f 72 65 76 65 72 73 | 65 09 64 63 73 2e 65 64 |s/revers|e.dcs.ed|
|00000b40| 2e 61 63 2e 75 6b 0a 58 | 31 32 39 2e 32 31 35 2e |.ac.uk.X|129.215.|
|00000b50| 32 35 32 2e 30 09 32 35 | 35 2e 32 35 35 2e 32 35 |252.0.25|5.255.25|
|00000b60| 35 2e 30 09 4e 65 77 2f | 7a 6f 6e 65 2e 32 35 32 |5.0.New/|zone.252|
|00000b70| 20 20 48 65 61 64 65 72 | 73 2f 72 65 76 65 72 73 | Header|s/revers|
|00000b80| 65 09 64 63 73 2e 65 64 | 2e 61 63 2e 75 6b 0a 58 |e.dcs.ed|.ac.uk.X|
|00000b90| 31 32 39 2e 32 31 35 2e | 32 2e 30 09 32 35 35 2e |129.215.|2.0.255.|
|00000ba0| 32 35 35 2e 32 35 35 2e | 30 20 20 20 4e 65 77 2f |255.255.|0 New/|
|00000bb0| 7a 6f 6e 65 2e 32 20 20 | 20 20 48 65 61 64 65 72 |zone.2 | Header|
|00000bc0| 73 2f 72 65 76 65 72 73 | 65 09 64 63 73 2e 65 64 |s/revers|e.dcs.ed|
|00000bd0| 2e 61 63 2e 75 6b 0a 58 | 31 32 39 2e 32 31 35 2e |.ac.uk.X|129.215.|
|00000be0| 31 38 2e 30 09 32 35 35 | 2e 32 35 35 2e 32 35 35 |18.0.255|.255.255|
|00000bf0| 2e 30 09 4e 65 77 2f 7a | 6f 6e 65 2e 31 38 20 20 |.0.New/z|one.18 |
|00000c00| 20 48 65 61 64 65 72 73 | 2f 72 65 76 65 72 73 65 | Headers|/reverse|
|00000c10| 09 64 63 73 2e 65 64 2e | 61 63 2e 75 6b 0a 58 31 |.dcs.ed.|ac.uk.X1|
|00000c20| 32 39 2e 32 31 35 2e 37 | 34 2e 30 09 32 35 35 2e |29.215.7|4.0.255.|
|00000c30| 32 35 35 2e 32 35 35 2e | 30 09 4e 65 77 2f 7a 6f |255.255.|0.New/zo|
|00000c40| 6e 65 2e 37 34 20 20 20 | 48 65 61 64 65 72 73 2f |ne.74 |Headers/|
|00000c50| 72 65 76 65 72 73 65 09 | 64 63 73 2e 65 64 2e 61 |reverse.|dcs.ed.a|
|00000c60| 63 2e 75 6b 0a 58 31 32 | 39 2e 32 31 35 2e 32 30 |c.uk.X12|9.215.20|
|00000c70| 32 2e 30 09 32 35 35 2e | 32 35 35 2e 32 35 35 2e |2.0.255.|255.255.|
|00000c80| 30 09 4e 65 77 2f 7a 6f | 6e 65 2e 32 30 32 20 20 |0.New/zo|ne.202 |
|00000c90| 48 65 61 64 65 72 73 2f | 72 65 76 65 72 73 65 09 |Headers/|reverse.|
|00000ca0| 64 63 73 2e 65 64 2e 61 | 63 2e 75 6b 0a 58 31 32 |dcs.ed.a|c.uk.X12|
|00000cb0| 39 2e 32 31 35 2e 34 32 | 2e 30 09 32 35 35 2e 32 |9.215.42|.0.255.2|
|00000cc0| 35 35 2e 32 35 35 2e 30 | 09 4e 65 77 2f 7a 6f 6e |55.255.0|.New/zon|
|00000cd0| 65 2e 34 32 20 20 20 48 | 65 61 64 65 72 73 2f 72 |e.42 H|eaders/r|
|00000ce0| 65 76 65 72 73 65 09 64 | 63 73 2e 65 64 2e 61 63 |everse.d|cs.ed.ac|
|00000cf0| 2e 75 6b 0a 58 31 32 39 | 2e 32 31 35 2e 39 30 2e |.uk.X129|.215.90.|
|00000d00| 30 09 32 35 35 2e 32 35 | 35 2e 32 35 35 2e 30 09 |0.255.25|5.255.0.|
|00000d10| 4e 65 77 2f 7a 6f 6e 65 | 2e 39 30 20 20 20 48 65 |New/zone|.90 He|
|00000d20| 61 64 65 72 73 2f 72 65 | 76 65 72 73 65 09 64 63 |aders/re|verse.dc|
|00000d30| 73 2e 65 64 2e 61 63 2e | 75 6b 0a 58 31 32 39 2e |s.ed.ac.|uk.X129.|
|00000d40| 32 31 35 2e 32 31 38 2e | 30 09 32 35 35 2e 32 35 |215.218.|0.255.25|
|00000d50| 35 2e 32 35 35 2e 30 09 | 4e 65 77 2f 7a 6f 6e 65 |5.255.0.|New/zone|
|00000d60| 2e 32 31 38 20 20 48 65 | 61 64 65 72 73 2f 72 65 |.218 He|aders/re|
|00000d70| 76 65 72 73 65 09 64 63 | 73 2e 65 64 2e 61 63 2e |verse.dc|s.ed.ac.|
|00000d80| 75 6b 0a 58 31 32 39 2e | 32 31 35 2e 35 38 2e 30 |uk.X129.|215.58.0|
|00000d90| 09 32 35 35 2e 32 35 35 | 2e 32 35 35 2e 30 09 4e |.255.255|.255.0.N|
|00000da0| 65 77 2f 7a 6f 6e 65 2e | 35 38 20 20 20 48 65 61 |ew/zone.|58 Hea|
|00000db0| 64 65 72 73 2f 72 65 76 | 65 72 73 65 09 64 63 73 |ders/rev|erse.dcs|
|00000dc0| 2e 65 64 2e 61 63 2e 75 | 6b 0a 58 31 32 39 2e 32 |.ed.ac.u|k.X129.2|
|00000dd0| 31 35 2e 31 38 36 2e 30 | 09 32 35 35 2e 32 35 35 |15.186.0|.255.255|
|00000de0| 2e 32 35 35 2e 30 09 4e | 65 77 2f 7a 6f 6e 65 2e |.255.0.N|ew/zone.|
|00000df0| 31 38 36 20 20 48 65 61 | 64 65 72 73 2f 72 65 76 |186 Hea|ders/rev|
|00000e00| 65 72 73 65 09 64 63 73 | 2e 65 64 2e 61 63 2e 75 |erse.dcs|.ed.ac.u|
|00000e10| 6b 0a 58 23 0a 58 31 39 | 32 2e 34 31 2e 31 31 30 |k.X#.X19|2.41.110|
|00000e20| 2e 30 09 32 35 35 2e 32 | 35 35 2e 32 35 35 2e 30 |.0.255.2|55.255.0|
|00000e30| 09 4e 65 77 2f 7a 6f 6e | 65 2e 34 31 2e 31 31 30 |.New/zon|e.41.110|
|00000e40| 20 48 65 61 64 65 72 73 | 2f 72 65 76 65 72 73 65 | Headers|/reverse|
|00000e50| 09 64 63 73 2e 65 64 2e | 61 63 2e 75 6b 0a 58 31 |.dcs.ed.|ac.uk.X1|
|00000e60| 39 32 2e 34 31 2e 31 33 | 31 2e 30 09 32 35 35 2e |92.41.13|1.0.255.|
|00000e70| 32 35 35 2e 32 35 35 2e | 30 09 4e 65 77 2f 7a 6f |255.255.|0.New/zo|
|00000e80| 6e 65 2e 34 31 2e 31 33 | 31 20 48 65 61 64 65 72 |ne.41.13|1 Header|
|00000e90| 73 2f 72 65 76 65 72 73 | 65 09 64 63 73 2e 65 64 |s/revers|e.dcs.ed|
|00000ea0| 2e 61 63 2e 75 6b 0a 45 | 4e 44 5f 4f 46 5f 43 6f |.ac.uk.E|ND_OF_Co|
|00000eb0| 6e 66 69 67 75 72 65 2d | 65 78 61 6d 70 6c 65 0a |nfigure-|example.|
|00000ec0| 69 66 20 74 65 73 74 20 | 31 38 33 31 20 2d 6e 65 |if test |1831 -ne|
|00000ed0| 20 60 77 63 20 2d 63 20 | 3c 43 6f 6e 66 69 67 75 | `wc -c |<Configu|
|00000ee0| 72 65 2d 65 78 61 6d 70 | 6c 65 60 3b 20 74 68 65 |re-examp|le`; the|
|00000ef0| 6e 0a 20 20 20 20 65 63 | 68 6f 20 73 68 61 72 3a |n. ec|ho shar:|
|00000f00| 20 5c 22 43 6f 6e 66 69 | 67 75 72 65 2d 65 78 61 | \"Confi|gure-exa|
|00000f10| 6d 70 6c 65 5c 22 20 75 | 6e 70 61 63 6b 65 64 20 |mple\" u|npacked |
|00000f20| 77 69 74 68 20 77 72 6f | 6e 67 20 73 69 7a 65 21 |with wro|ng size!|
|00000f30| 0a 66 69 0a 23 20 65 6e | 64 20 6f 66 20 6f 76 65 |.fi.# en|d of ove|
|00000f40| 72 77 72 69 74 69 6e 67 | 20 63 68 65 63 6b 0a 66 |rwriting| check.f|
|00000f50| 69 0a 69 66 20 74 65 73 | 74 20 2d 66 20 4d 61 6b |i.if tes|t -f Mak|
|00000f60| 65 66 69 6c 65 20 2d 61 | 20 22 24 7b 31 7d 22 20 |efile -a| "${1}" |
|00000f70| 21 3d 20 22 2d 63 22 20 | 3b 20 74 68 65 6e 20 0a |!= "-c" |; then .|
|00000f80| 20 20 65 63 68 6f 20 73 | 68 61 72 3a 20 57 69 6c | echo s|har: Wil|
|00000f90| 6c 20 6e 6f 74 20 6f 76 | 65 72 2d 77 72 69 74 65 |l not ov|er-write|
|00000fa0| 20 65 78 69 73 74 69 6e | 67 20 66 69 6c 65 20 5c | existin|g file \|
|00000fb0| 22 4d 61 6b 65 66 69 6c | 65 5c 22 0a 65 6c 73 65 |"Makefil|e\".else|
|00000fc0| 0a 65 63 68 6f 20 73 68 | 61 72 3a 20 45 78 74 72 |.echo sh|ar: Extr|
|00000fd0| 61 63 74 69 6e 67 20 5c | 22 4d 61 6b 65 66 69 6c |acting \|"Makefil|
|00000fe0| 65 5c 22 20 5c 28 31 34 | 31 20 63 68 61 72 61 63 |e\" \(14|1 charac|
|00000ff0| 74 65 72 73 5c 29 0a 73 | 65 64 20 22 73 2f 5e 58 |ters\).s|ed "s/^X|
|00001000| 2f 2f 22 20 3e 4d 61 6b | 65 66 69 6c 65 20 3c 3c |//" >Mak|efile <<|
|00001010| 27 45 4e 44 5f 4f 46 5f | 4d 61 6b 65 66 69 6c 65 |'END_OF_|Makefile|
|00001020| 27 0a 58 61 6c 6c 3a 20 | 6d 61 6b 65 44 4e 53 20 |'.Xall: |makeDNS |
|00001030| 6d 61 6b 65 48 53 0a 58 | 0a 58 6d 61 6b 65 44 4e |makeHS.X|.XmakeDN|
|00001040| 53 3a 20 6d 61 6b 65 44 | 4e 53 2e 63 0a 58 09 63 |S: makeD|NS.c.X.c|
|00001050| 63 20 2d 4f 20 2d 6f 20 | 6d 61 6b 65 44 4e 53 20 |c -O -o |makeDNS |
|00001060| 6d 61 6b 65 44 4e 53 2e | 63 0a 58 09 73 74 72 69 |makeDNS.|c.X.stri|
|00001070| 70 20 6d 61 6b 65 44 4e | 53 0a 58 0a 58 6d 61 6b |p makeDN|S.X.Xmak|
|00001080| 65 48 53 3a 20 6d 61 6b | 65 48 53 2e 63 0a 58 09 |eHS: mak|eHS.c.X.|
|00001090| 63 63 20 2d 4f 20 2d 6f | 20 6d 61 6b 65 48 53 20 |cc -O -o| makeHS |
|000010a0| 6d 61 6b 65 48 53 2e 63 | 0a 58 09 73 74 72 69 70 |makeHS.c|.X.strip|
|000010b0| 20 6d 61 6b 65 48 53 0a | 45 4e 44 5f 4f 46 5f 4d | makeHS.|END_OF_M|
|000010c0| 61 6b 65 66 69 6c 65 0a | 69 66 20 74 65 73 74 20 |akefile.|if test |
|000010d0| 31 34 31 20 2d 6e 65 20 | 60 77 63 20 2d 63 20 3c |141 -ne |`wc -c <|
|000010e0| 4d 61 6b 65 66 69 6c 65 | 60 3b 20 74 68 65 6e 0a |Makefile|`; then.|
|000010f0| 20 20 20 20 65 63 68 6f | 20 73 68 61 72 3a 20 5c | echo| shar: \|
|00001100| 22 4d 61 6b 65 66 69 6c | 65 5c 22 20 75 6e 70 61 |"Makefil|e\" unpa|
|00001110| 63 6b 65 64 20 77 69 74 | 68 20 77 72 6f 6e 67 20 |cked wit|h wrong |
|00001120| 73 69 7a 65 21 0a 66 69 | 0a 23 20 65 6e 64 20 6f |size!.fi|.# end o|
|00001130| 66 20 6f 76 65 72 77 72 | 69 74 69 6e 67 20 63 68 |f overwr|iting ch|
|00001140| 65 63 6b 0a 66 69 0a 69 | 66 20 74 65 73 74 20 2d |eck.fi.i|f test -|
|00001150| 66 20 6d 61 6b 65 44 4e | 53 2e 63 20 2d 61 20 22 |f makeDN|S.c -a "|
|00001160| 24 7b 31 7d 22 20 21 3d | 20 22 2d 63 22 20 3b 20 |${1}" !=| "-c" ; |
|00001170| 74 68 65 6e 20 0a 20 20 | 65 63 68 6f 20 73 68 61 |then . |echo sha|
|00001180| 72 3a 20 57 69 6c 6c 20 | 6e 6f 74 20 6f 76 65 72 |r: Will |not over|
|00001190| 2d 77 72 69 74 65 20 65 | 78 69 73 74 69 6e 67 20 |-write e|xisting |
|000011a0| 66 69 6c 65 20 5c 22 6d | 61 6b 65 44 4e 53 2e 63 |file \"m|akeDNS.c|
|000011b0| 5c 22 0a 65 6c 73 65 0a | 65 63 68 6f 20 73 68 61 |\".else.|echo sha|
|000011c0| 72 3a 20 45 78 74 72 61 | 63 74 69 6e 67 20 5c 22 |r: Extra|cting \"|
|000011d0| 6d 61 6b 65 44 4e 53 2e | 63 5c 22 20 5c 28 31 33 |makeDNS.|c\" \(13|
|000011e0| 31 35 37 20 63 68 61 72 | 61 63 74 65 72 73 5c 29 |157 char|acters\)|
|000011f0| 0a 73 65 64 20 22 73 2f | 5e 58 2f 2f 22 20 3e 6d |.sed "s/|^X//" >m|
|00001200| 61 6b 65 44 4e 53 2e 63 | 20 3c 3c 27 45 4e 44 5f |akeDNS.c| <<'END_|
|00001210| 4f 46 5f 6d 61 6b 65 44 | 4e 53 2e 63 27 0a 58 2f |OF_makeD|NS.c'.X/|
|00001220| 2a 20 6d 61 6b 65 44 4e | 53 2e 63 20 2d 2d 20 67 |* makeDN|S.c -- g|
|00001230| 65 6e 65 72 61 74 65 20 | 44 4e 53 20 52 52 73 20 |enerate |DNS RRs |
|00001240| 66 72 6f 6d 20 2f 65 74 | 63 2f 68 6f 73 74 73 0a |from /et|c/hosts.|
|00001250| 58 20 2a 20 43 6f 70 79 | 72 69 67 68 74 20 28 63 |X * Copy|right (c|
|00001260| 29 20 31 39 39 31 2c 20 | 31 39 39 32 20 44 65 70 |) 1991, |1992 Dep|
|00001270| 61 72 74 6d 65 6e 74 20 | 6f 66 20 43 6f 6d 70 75 |artment |of Compu|
|00001280| 74 65 72 20 53 63 69 65 | 6e 63 65 2c 20 55 6e 69 |ter Scie|nce, Uni|
|00001290| 76 65 72 73 69 74 79 20 | 6f 66 0a 58 20 2a 20 45 |versity |of.X * E|
|000012a0| 64 69 6e 62 75 72 67 68 | 2e 20 20 4e 6f 6e 2d 63 |dinburgh|. Non-c|
|000012b0| 6f 6d 6d 65 72 63 69 61 | 6c 20 75 73 65 20 61 6e |ommercia|l use an|
|000012c0| 64 20 72 65 64 69 73 74 | 72 69 62 75 74 69 6f 6e |d redist|ribution|
|000012d0| 20 69 73 20 70 65 72 6d | 69 74 74 65 64 20 70 72 | is perm|itted pr|
|000012e0| 6f 76 69 64 65 64 20 74 | 68 69 73 0a 58 20 2a 20 |ovided t|his.X * |
|000012f0| 6e 6f 74 69 63 65 20 72 | 65 6d 61 69 6e 73 20 69 |notice r|emains i|
|00001300| 6e 74 61 63 74 20 61 6e | 64 20 61 6e 79 20 6d 6f |ntact an|d any mo|
|00001310| 64 69 66 69 63 61 74 69 | 6f 6e 73 20 61 72 65 20 |dificati|ons are |
|00001320| 66 6c 61 67 67 65 64 2e | 0a 58 20 2a 0a 58 20 2a |flagged.|.X *.X *|
|00001330| 20 54 68 69 73 20 73 6f | 66 74 77 61 72 65 20 69 | This so|ftware i|
|00001340| 73 20 6f 66 66 65 72 65 | 64 20 22 61 73 20 69 73 |s offere|d "as is|
|00001350| 22 2c 20 77 69 74 68 20 | 6e 6f 20 77 61 72 72 61 |", with |no warra|
|00001360| 6e 74 79 20 6f 72 20 73 | 75 70 70 6f 72 74 20 77 |nty or s|upport w|
|00001370| 68 61 74 73 6f 65 76 65 | 72 2e 0a 58 20 2a 20 50 |hatsoeve|r..X * P|
|00001380| 6c 65 61 73 65 20 73 65 | 6e 64 20 63 6f 6d 6d 65 |lease se|nd comme|
|00001390| 6e 74 73 20 74 6f 20 67 | 64 6d 72 40 64 63 73 2e |nts to g|dmr@dcs.|
|000013a0| 65 64 2e 61 63 2e 75 6b | 2e 0a 58 20 2a 2f 0a 58 |ed.ac.uk|..X */.X|
|000013b0| 0a 58 2f 2a 20 47 65 6e | 65 72 61 74 65 20 61 20 |.X/* Gen|erate a |
|000013c0| 73 65 74 20 6f 66 20 44 | 4e 53 20 52 52 20 66 69 |set of D|NS RR fi|
|000013d0| 6c 65 73 20 66 72 6f 6d | 20 2f 65 74 63 2f 68 6f |les from| /etc/ho|
|000013e0| 73 74 73 20 61 6e 64 20 | 73 6f 6d 65 20 63 6f 6e |sts and |some con|
|000013f0| 66 69 67 75 72 61 74 69 | 6f 6e 0a 58 20 2a 20 66 |figurati|on.X * f|
|00001400| 69 6c 65 73 2c 20 75 6e | 64 65 72 20 61 20 72 65 |iles, un|der a re|
|00001410| 61 73 6f 6e 61 62 6c 65 | 20 73 65 74 20 6f 66 20 |asonable| set of |
|00001420| 61 73 73 75 6d 70 74 69 | 6f 6e 73 2e 20 20 54 68 |assumpti|ons. Th|
|00001430| 65 20 70 72 6f 67 72 61 | 6d 20 65 78 70 65 63 74 |e progra|m expect|
|00001440| 73 20 74 6f 0a 58 20 2a | 20 62 65 20 72 75 6e 6e |s to.X *| be runn|
|00001450| 69 6e 67 20 69 6e 20 74 | 68 65 20 74 61 72 67 65 |ing in t|he targe|
|00001460| 74 20 64 69 72 65 63 74 | 6f 72 79 2e 20 20 49 74 |t direct|ory. It|
|00001470| 20 72 65 61 64 73 20 74 | 68 65 20 66 69 6c 65 20 | reads t|he file |
|00001480| 22 2e 63 6f 6e 66 69 67 | 75 72 65 22 20 69 6e 0a |".config|ure" in.|
|00001490| 58 20 2a 20 74 68 61 74 | 20 64 69 72 65 63 74 6f |X * that| directo|
|000014a0| 72 79 2e 20 20 54 68 65 | 20 66 69 6c 65 20 63 6f |ry. The| file co|
|000014b0| 6e 73 69 73 74 73 20 6f | 66 20 61 20 73 65 71 75 |nsists o|f a sequ|
|000014c0| 65 6e 63 65 20 6f 66 20 | 22 77 69 72 65 22 20 72 |ence of |"wire" r|
|000014d0| 65 63 6f 72 64 73 2c 20 | 6f 6e 65 0a 58 20 2a 20 |ecords, |one.X * |
|000014e0| 70 65 72 20 6c 69 6e 65 | 2c 20 65 61 63 68 20 6f |per line|, each o|
|000014f0| 6e 65 20 6c 69 73 74 69 | 6e 67 20 74 68 65 20 6e |ne listi|ng the n|
|00001500| 65 74 77 6f 72 6b 20 6e | 75 6d 62 65 72 2c 20 6e |etwork n|umber, n|
|00001510| 65 74 6d 61 73 6b 2c 20 | 52 52 20 66 69 6c 65 2c |etmask, |RR file,|
|00001520| 20 68 65 61 64 65 72 0a | 58 20 2a 20 66 69 6c 65 | header.|X * file|
|00001530| 20 61 6e 64 20 66 75 6c | 6c 20 64 6f 6d 61 69 6e | and ful|l domain|
|00001540| 20 6e 61 6d 65 20 66 6f | 72 20 61 6c 6c 20 68 6f | name fo|r all ho|
|00001550| 73 74 73 20 6f 6e 20 74 | 68 61 74 20 77 69 72 65 |sts on t|hat wire|
|00001560| 2e 20 20 41 6c 74 65 72 | 6e 61 74 69 76 65 6c 79 |. Alter|natively|
|00001570| 2c 0a 58 20 2a 20 61 20 | 22 64 6f 6d 61 69 6e 22 |,.X * a |"domain"|
|00001580| 20 72 65 63 6f 72 64 20 | 63 6f 6e 73 69 73 74 73 | record |consists|
|00001590| 20 6f 66 20 30 2e 30 2e | 30 2e 30 20 61 73 20 6e | of 0.0.|0.0 as n|
|000015a0| 65 74 77 6f 72 6b 20 6e | 75 6d 62 65 72 2c 20 64 |etwork n|umber, d|
|000015b0| 6f 6d 61 69 6e 2c 20 52 | 52 20 66 69 6c 65 0a 58 |omain, R|R file.X|
|000015c0| 20 2a 20 61 6e 64 20 68 | 65 61 64 65 72 20 66 69 | * and h|eader fi|
|000015d0| 6c 65 2e 0a 58 20 2a 0a | 58 20 2a 20 54 68 65 20 |le..X *.|X * The |
|000015e0| 2f 65 74 63 2f 68 6f 73 | 74 73 20 66 69 6c 65 20 |/etc/hos|ts file |
|000015f0| 69 73 20 72 65 61 64 20 | 69 6e 2c 20 61 6e 64 20 |is read |in, and |
|00001600| 68 6f 73 74 73 20 61 72 | 65 20 61 64 64 65 64 20 |hosts ar|e added |
|00001610| 74 6f 20 61 20 32 2d 77 | 61 79 20 6c 69 6e 6b 65 |to a 2-w|ay linke|
|00001620| 64 20 6c 69 73 74 2c 0a | 58 20 2a 20 73 6f 72 74 |d list,.|X * sort|
|00001630| 65 64 20 61 6c 70 68 61 | 62 65 74 69 63 61 6c 6c |ed alpha|beticall|
|00001640| 79 20 62 79 20 68 6f 73 | 74 20 6e 61 6d 65 20 28 |y by hos|t name (|
|00001650| 6f 72 64 65 72 69 6e 67 | 20 69 6e 20 74 68 65 20 |ordering| in the |
|00001660| 44 4e 53 20 64 6f 65 73 | 6e 27 74 20 6d 61 74 74 |DNS does|n't matt|
|00001670| 65 72 2c 0a 58 20 2a 20 | 61 6e 64 20 74 68 69 73 |er,.X * |and this|
|00001680| 20 73 6f 72 74 69 6e 67 | 20 61 6c 6c 6f 77 73 20 | sorting| allows |
|00001690| 74 68 65 20 70 72 6f 67 | 72 61 6d 27 73 20 61 73 |the prog|ram's as|
|000016a0| 73 75 6d 70 74 69 6f 6e | 73 20 74 6f 20 62 65 20 |sumption|s to be |
|000016b0| 69 6d 70 6c 65 6d 65 6e | 74 65 64 29 2e 0a 58 20 |implemen|ted)..X |
|000016c0| 2a 20 50 72 69 6d 61 72 | 79 20 6e 61 6d 65 73 20 |* Primar|y names |
|000016d0| 61 72 65 20 68 65 6c 64 | 20 77 69 74 68 20 74 68 |are held| with th|
|000016e0| 65 69 72 20 63 6f 72 72 | 65 73 70 6f 6e 64 69 6e |eir corr|espondin|
|000016f0| 67 20 49 50 20 61 64 64 | 72 65 73 73 2c 20 77 68 |g IP add|ress, wh|
|00001700| 69 6c 65 20 61 6c 69 61 | 73 65 73 0a 58 20 2a 20 |ile alia|ses.X * |
|00001710| 68 61 76 65 20 74 68 65 | 20 6e 61 6d 65 20 6f 66 |have the| name of|
|00001720| 20 74 68 65 20 63 6f 72 | 72 65 73 70 6f 6e 64 69 | the cor|respondi|
|00001730| 6e 67 20 70 72 69 6d 61 | 72 79 2e 0a 58 20 2a 0a |ng prima|ry..X *.|
|00001740| 58 20 2a 20 4f 6e 63 65 | 20 74 68 65 20 68 6f 73 |X * Once| the hos|
|00001750| 74 73 20 66 69 6c 65 20 | 68 61 73 20 62 65 65 6e |ts file |has been|
|00001760| 20 72 65 61 64 20 69 6e | 2c 20 74 68 65 20 6f 75 | read in|, the ou|
|00001770| 74 70 75 74 20 66 69 6c | 65 73 20 61 72 65 20 6f |tput fil|es are o|
|00001780| 70 65 6e 65 64 20 61 6e | 64 0a 58 20 2a 20 74 68 |pened an|d.X * th|
|00001790| 65 20 63 6f 6e 73 74 61 | 6e 74 20 68 65 61 64 65 |e consta|nt heade|
|000017a0| 72 20 69 6e 66 6f 72 6d | 61 74 69 6f 6e 20 69 73 |r inform|ation is|
|000017b0| 20 77 72 69 74 74 65 6e | 20 28 77 69 74 68 20 74 | written| (with t|
|000017c0| 68 65 20 73 65 71 75 65 | 6e 63 65 20 6e 75 6d 62 |he seque|nce numb|
|000017d0| 65 72 0a 58 20 2a 20 70 | 72 6f 70 65 72 6c 79 20 |er.X * p|roperly |
|000017e0| 75 70 64 61 74 65 64 29 | 2e 20 20 54 68 65 20 68 |updated)|. The h|
|000017f0| 6f 73 74 73 20 6c 69 73 | 74 20 69 73 20 74 68 65 |osts lis|t is the|
|00001800| 6e 20 73 63 61 6e 6e 65 | 64 20 69 6e 20 61 73 63 |n scanne|d in asc|
|00001810| 65 6e 64 69 6e 67 20 6f | 72 64 65 72 0a 58 20 2a |ending o|rder.X *|
|00001820| 20 61 6e 64 20 74 68 65 | 20 63 6f 72 72 65 73 70 | and the| corresp|
|00001830| 6f 6e 64 69 6e 67 20 65 | 6e 74 72 69 65 73 20 77 |onding e|ntries w|
|00001840| 72 69 74 74 65 6e 20 61 | 63 63 6f 72 64 69 6e 67 |ritten a|ccording|
|00001850| 20 74 6f 20 74 68 65 20 | 66 6f 6c 6c 6f 77 69 6e | to the |followin|
|00001860| 67 0a 58 20 2a 20 68 65 | 75 72 69 73 74 69 63 73 |g.X * he|uristics|
|00001870| 3a 20 69 66 20 61 20 68 | 6f 73 74 20 6e 61 6d 65 |: if a h|ost name|
|00001880| 20 68 61 73 20 61 73 20 | 69 74 73 20 6c 65 61 64 | has as |its lead|
|00001890| 69 6e 67 20 63 6f 6d 70 | 6f 6e 65 6e 74 20 6f 6e |ing comp|onent on|
|000018a0| 65 20 6f 66 20 74 68 65 | 0a 58 20 2a 20 70 72 65 |e of the|.X * pre|
|000018b0| 63 65 64 69 6e 67 20 68 | 6f 73 74 73 20 74 68 65 |ceding h|osts the|
|000018c0| 6e 20 69 74 20 69 73 20 | 61 73 73 75 6d 65 64 20 |n it is |assumed |
|000018d0| 74 6f 20 62 65 20 61 20 | 73 65 63 6f 6e 64 20 69 |to be a |second i|
|000018e0| 6e 74 65 72 66 61 63 65 | 20 6f 6e 20 61 0a 58 20 |nterface| on a.X |
|000018f0| 2a 20 6d 75 6c 74 69 2d | 68 6f 6d 65 64 20 68 6f |* multi-|homed ho|
|00001900| 73 74 2c 20 61 6e 64 20 | 61 6e 20 61 64 64 69 74 |st, and |an addit|
|00001910| 69 6f 6e 61 6c 20 41 20 | 72 65 63 6f 72 64 20 69 |ional A |record i|
|00001920| 73 20 77 72 69 74 74 65 | 6e 3b 20 61 6e 64 20 74 |s writte|n; and t|
|00001930| 68 65 20 64 6f 6d 61 69 | 6e 0a 58 20 2a 20 6f 66 |he domai|n.X * of|
|00001940| 20 61 20 68 6f 73 74 20 | 69 73 20 74 61 6b 65 6e | a host |is taken|
|00001950| 20 74 6f 20 62 65 20 74 | 68 61 74 20 6f 66 20 69 | to be t|hat of i|
|00001960| 74 73 20 66 69 72 73 74 | 20 41 20 72 65 63 6f 72 |ts first| A recor|
|00001970| 64 2c 20 61 73 20 64 65 | 66 69 6e 65 64 20 69 6e |d, as de|fined in|
|00001980| 20 74 68 65 0a 58 20 2a | 20 63 6f 72 72 65 73 70 | the.X *| corresp|
|00001990| 6f 6e 64 69 6e 67 20 22 | 77 69 72 65 22 20 65 6e |onding "|wire" en|
|000019a0| 74 72 79 2e 20 20 46 69 | 6e 61 6c 6c 79 20 74 68 |try. Fi|nally th|
|000019b0| 65 20 70 72 6f 67 72 61 | 6d 20 65 78 69 74 73 20 |e progra|m exits |
|000019c0| 77 69 74 68 20 61 20 7a | 65 72 6f 20 73 74 61 74 |with a z|ero stat|
|000019d0| 75 73 2e 0a 58 20 2a 0a | 58 20 2a 20 53 68 6f 75 |us..X *.|X * Shou|
|000019e0| 6c 64 20 61 6e 79 20 65 | 72 72 6f 72 73 20 6f 63 |ld any e|rrors oc|
|000019f0| 63 75 72 2c 20 74 68 65 | 20 70 72 6f 67 72 61 6d |cur, the| program|
|00001a00| 20 77 69 6c 6c 20 65 78 | 69 74 20 77 69 74 68 20 | will ex|it with |
|00001a10| 61 20 6e 6f 6e 2d 7a 65 | 72 6f 20 73 74 61 74 75 |a non-ze|ro statu|
|00001a20| 73 2e 0a 58 20 2a 2f 0a | 58 0a 58 23 64 65 66 69 |s..X */.|X.X#defi|
|00001a30| 6e 65 20 48 4f 53 54 53 | 20 22 2f 65 74 63 2f 68 |ne HOSTS| "/etc/h|
|00001a40| 6f 73 74 73 22 0a 58 23 | 64 65 66 69 6e 65 20 43 |osts".X#|define C|
|00001a50| 4f 4e 46 49 47 20 22 43 | 6f 6e 66 69 67 75 72 65 |ONFIG "C|onfigure|
|00001a60| 22 0a 58 23 64 65 66 69 | 6e 65 20 4c 4f 47 20 22 |".X#defi|ne LOG "|
|00001a70| 4c 6f 67 22 0a 58 23 64 | 65 66 69 6e 65 20 4d 41 |Log".X#d|efine MA|
|00001a80| 58 57 49 52 45 20 36 33 | 0a 58 23 64 65 66 69 6e |XWIRE 63|.X#defin|
|00001a90| 65 20 4d 41 58 44 4f 4d | 41 49 4e 20 35 0a 58 23 |e MAXDOM|AIN 5.X#|
|00001aa0| 64 65 66 69 6e 65 20 4c | 49 4e 45 42 55 46 46 45 |define L|INEBUFFE|
|00001ab0| 52 20 31 32 30 0a 58 0a | 58 23 69 6e 63 6c 75 64 |R 120.X.|X#includ|
|00001ac0| 65 20 3c 73 74 64 69 6f | 2e 68 3e 0a 58 23 69 6e |e <stdio|.h>.X#in|
|00001ad0| 63 6c 75 64 65 20 3c 73 | 74 64 6c 69 62 2e 68 3e |clude <s|tdlib.h>|
|00001ae0| 0a 58 23 69 6e 63 6c 75 | 64 65 20 3c 63 74 79 70 |.X#inclu|de <ctyp|
|00001af0| 65 2e 68 3e 0a 58 23 69 | 6e 63 6c 75 64 65 20 3c |e.h>.X#i|nclude <|
|00001b00| 70 77 64 2e 68 3e 0a 58 | 23 69 6e 63 6c 75 64 65 |pwd.h>.X|#include|
|00001b10| 20 3c 73 79 73 2f 74 69 | 6d 65 2e 68 3e 0a 58 23 | <sys/ti|me.h>.X#|
|00001b20| 69 6e 63 6c 75 64 65 20 | 3c 66 63 6e 74 6c 2e 68 |include |<fcntl.h|
|00001b30| 3e 0a 58 23 69 6e 63 6c | 75 64 65 20 3c 74 69 6d |>.X#incl|ude <tim|
|00001b40| 65 2e 68 3e 0a 58 0a 58 | 74 79 70 65 64 65 66 20 |e.h>.X.X|typedef |
|00001b50| 73 74 72 75 63 74 20 5f | 64 6f 6d 61 69 6e 20 7b |struct _|domain {|
|00001b60| 0a 58 09 63 68 61 72 20 | 2a 64 6f 6d 61 69 6e 6e |.X.char |*domainn|
|00001b70| 61 6d 65 3b 0a 58 09 63 | 68 61 72 20 2a 52 52 66 |ame;.X.c|har *RRf|
|00001b80| 69 6c 65 3b 0a 58 09 63 | 68 61 72 20 2a 68 65 61 |ile;.X.c|har *hea|
|00001b90| 64 65 72 66 69 6c 65 3b | 0a 58 09 63 68 61 72 20 |derfile;|.X.char |
|00001ba0| 2a 6f 74 68 65 72 5a 6f | 6e 65 66 69 6c 65 3b 0a |*otherZo|nefile;.|
|00001bb0| 58 09 63 68 61 72 20 2a | 4d 58 66 69 6c 65 3b 0a |X.char *|MXfile;.|
|00001bc0| 58 09 46 49 4c 45 20 2a | 66 69 6c 65 3b 0a 58 09 |X.FILE *|file;.X.|
|00001bd0| 46 49 4c 45 20 2a 6f 74 | 68 65 72 3b 0a 58 09 63 |FILE *ot|her;.X.c|
|00001be0| 68 61 72 20 2a 4d 58 64 | 61 74 61 3b 0a 58 7d 20 |har *MXd|ata;.X} |
|00001bf0| 64 6f 6d 61 69 6e 3b 0a | 58 0a 58 74 79 70 65 64 |domain;.|X.Xtyped|
|00001c00| 65 66 20 73 74 72 75 63 | 74 20 5f 77 69 72 65 20 |ef struc|t _wire |
|00001c10| 7b 0a 58 09 6c 6f 6e 67 | 20 6e 75 6d 62 65 72 3b |{.X.long| number;|
|00001c20| 0a 58 09 6c 6f 6e 67 20 | 6e 65 74 6d 61 73 6b 3b |.X.long |netmask;|
|00001c30| 0a 58 09 63 68 61 72 20 | 2a 52 52 66 69 6c 65 3b |.X.char |*RRfile;|
|00001c40| 0a 58 09 63 68 61 72 20 | 2a 68 65 61 64 65 72 66 |.X.char |*headerf|
|00001c50| 69 6c 65 3b 0a 58 09 63 | 68 61 72 20 2a 64 6f 6d |ile;.X.c|har *dom|
|00001c60| 61 69 6e 6e 61 6d 65 3b | 0a 58 09 46 49 4c 45 20 |ainname;|.X.FILE |
|00001c70| 2a 66 69 6c 65 3b 0a 58 | 09 64 6f 6d 61 69 6e 20 |*file;.X|.domain |
|00001c80| 2a 64 3b 0a 58 7d 20 77 | 69 72 65 3b 0a 58 0a 58 |*d;.X} w|ire;.X.X|
|00001c90| 74 79 70 65 64 65 66 20 | 73 74 72 75 63 74 20 5f |typedef |struct _|
|00001ca0| 68 6f 73 74 20 7b 0a 58 | 09 73 74 72 75 63 74 20 |host {.X|.struct |
|00001cb0| 5f 68 6f 73 74 20 2a 66 | 6f 72 77 61 72 64 3b 0a |_host *f|orward;.|
|00001cc0| 58 09 73 74 72 75 63 74 | 20 5f 68 6f 73 74 20 2a |X.struct| _host *|
|00001cd0| 62 61 63 6b 77 61 72 64 | 3b 0a 58 09 6c 6f 6e 67 |backward|;.X.long|
|00001ce0| 20 49 50 3b 0a 58 09 63 | 68 61 72 20 2a 6e 61 6d | IP;.X.c|har *nam|
|00001cf0| 65 3b 0a 58 09 73 74 72 | 75 63 74 20 5f 68 6f 73 |e;.X.str|uct _hos|
|00001d00| 74 20 2a 70 72 69 6d 61 | 72 79 3b 0a 58 09 77 69 |t *prima|ry;.X.wi|
|00001d10| 72 65 20 2a 77 3b 0a 58 | 7d 20 68 6f 73 74 3b 0a |re *w;.X|} host;.|
|00001d20| 58 0a 58 73 74 61 74 69 | 63 20 68 6f 73 74 20 2a |X.Xstati|c host *|
|00001d30| 68 6f 73 74 6c 69 73 74 | 3b 0a 58 73 74 61 74 69 |hostlist|;.Xstati|
|00001d40| 63 20 77 69 72 65 20 77 | 69 72 65 54 61 62 6c 65 |c wire w|ireTable|
|00001d50| 5b 4d 41 58 57 49 52 45 | 5d 3b 0a 58 73 74 61 74 |[MAXWIRE|];.Xstat|
|00001d60| 69 63 20 64 6f 6d 61 69 | 6e 20 64 6f 6d 61 69 6e |ic domai|n domain|
|00001d70| 54 61 62 6c 65 5b 4d 41 | 58 44 4f 4d 41 49 4e 5d |Table[MA|XDOMAIN]|
|00001d80| 3b 0a 58 73 74 61 74 69 | 63 20 69 6e 74 20 64 6f |;.Xstati|c int do|
|00001d90| 6d 61 69 6e 73 2c 20 77 | 69 72 65 73 3b 0a 58 0a |mains, w|ires;.X.|
|00001da0| 58 76 6f 69 64 20 72 65 | 61 64 63 6f 6e 66 69 67 |Xvoid re|adconfig|
|00001db0| 28 29 3b 0a 58 76 6f 69 | 64 20 72 65 61 64 68 6f |();.Xvoi|d readho|
|00001dc0| 73 74 73 28 29 3b 0a 58 | 76 6f 69 64 20 70 72 69 |sts();.X|void pri|
|00001dd0| 6e 74 68 6f 73 74 73 28 | 29 3b 0a 58 76 6f 69 64 |nthosts(|);.Xvoid|
|00001de0| 20 6f 70 65 6e 66 69 6c | 65 73 28 29 3b 0a 58 76 | openfil|es();.Xv|
|00001df0| 6f 69 64 20 63 6c 6f 73 | 65 66 69 6c 65 73 28 29 |oid clos|efiles()|
|00001e00| 3b 0a 58 0a 58 6d 61 69 | 6e 28 29 0a 58 7b 09 72 |;.X.Xmai|n().X{.r|
|00001e10| 65 61 64 63 6f 6e 66 69 | 67 28 29 3b 0a 58 09 72 |eadconfi|g();.X.r|
|00001e20| 65 61 64 68 6f 73 74 73 | 28 29 3b 0a 58 09 6f 70 |eadhosts|();.X.op|
|00001e30| 65 6e 66 69 6c 65 73 28 | 29 3b 0a 58 09 70 72 69 |enfiles(|);.X.pri|
|00001e40| 6e 74 68 6f 73 74 73 28 | 29 3b 0a 58 09 63 6c 6f |nthosts(|);.X.clo|
|00001e50| 73 65 66 69 6c 65 73 28 | 29 3b 0a 58 09 72 65 74 |sefiles(|);.X.ret|
|00001e60| 75 72 6e 20 30 3b 0a 58 | 7d 0a 58 0a 58 73 74 61 |urn 0;.X|}.X.Xsta|
|00001e70| 74 69 63 20 76 6f 69 64 | 20 61 64 64 68 6f 73 74 |tic void| addhost|
|00001e80| 28 68 29 0a 58 68 6f 73 | 74 20 2a 68 3b 0a 58 7b |(h).Xhos|t *h;.X{|
|00001e90| 09 68 6f 73 74 20 2a 78 | 3b 0a 58 09 69 66 20 28 |.host *x|;.X.if (|
|00001ea0| 68 6f 73 74 6c 69 73 74 | 20 3d 3d 20 4e 55 4c 4c |hostlist| == NULL|
|00001eb0| 29 20 7b 0a 58 09 09 2f | 2a 20 4c 69 73 74 20 65 |) {.X../|* List e|
|00001ec0| 6d 70 74 79 2c 20 65 61 | 73 79 20 63 61 73 65 20 |mpty, ea|sy case |
|00001ed0| 2a 2f 0a 58 09 09 68 2d | 3e 66 6f 72 77 61 72 64 |*/.X..h-|>forward|
|00001ee0| 20 3d 20 4e 55 4c 4c 3b | 0a 58 09 09 68 2d 3e 62 | = NULL;|.X..h->b|
|00001ef0| 61 63 6b 77 61 72 64 20 | 3d 20 4e 55 4c 4c 3b 0a |ackward |= NULL;.|
|00001f00| 58 09 09 68 6f 73 74 6c | 69 73 74 20 3d 20 68 3b |X..hostl|ist = h;|
|00001f10| 0a 58 09 09 72 65 74 75 | 72 6e 3b 0a 58 09 7d 0a |.X..retu|rn;.X.}.|
|00001f20| 58 09 78 20 3d 20 68 6f | 73 74 6c 69 73 74 3b 0a |X.x = ho|stlist;.|
|00001f30| 58 09 2f 2a 20 53 6b 69 | 70 20 74 6f 20 69 6e 73 |X./* Ski|p to ins|
|00001f40| 65 72 74 69 6f 6e 20 70 | 6f 69 6e 74 20 2a 2f 0a |ertion p|oint */.|
|00001f50| 58 09 77 68 69 6c 65 20 | 28 73 74 72 63 6d 70 28 |X.while |(strcmp(|
|00001f60| 78 2d 3e 6e 61 6d 65 2c | 20 68 2d 3e 6e 61 6d 65 |x->name,| h->name|
|00001f70| 29 20 3c 20 30 29 20 7b | 0a 58 09 09 69 66 20 28 |) < 0) {|.X..if (|
|00001f80| 78 2d 3e 66 6f 72 77 61 | 72 64 29 20 7b 0a 58 09 |x->forwa|rd) {.X.|
|00001f90| 09 09 2f 2a 20 4d 6f 72 | 65 2c 20 73 6b 69 70 20 |../* Mor|e, skip |
|00001fa0| 2a 2f 0a 58 09 09 09 78 | 20 3d 20 78 2d 3e 66 6f |*/.X...x| = x->fo|
|00001fb0| 72 77 61 72 64 3b 0a 58 | 09 09 7d 0a 58 09 09 65 |rward;.X|..}.X..e|
|00001fc0| 6c 73 65 20 7b 0a 58 09 | 09 09 2f 2a 20 41 64 64 |lse {.X.|../* Add|
|00001fd0| 20 61 74 20 74 68 65 20 | 74 61 69 6c 20 6f 66 20 | at the |tail of |
|00001fe0| 74 68 65 20 6c 69 73 74 | 20 2a 2f 0a 58 09 09 09 |the list| */.X...|
|00001ff0| 68 2d 3e 66 6f 72 77 61 | 72 64 20 3d 20 4e 55 4c |h->forwa|rd = NUL|
|00002000| 4c 3b 0a 58 09 09 09 68 | 2d 3e 62 61 63 6b 77 61 |L;.X...h|->backwa|
|00002010| 72 64 20 3d 20 78 3b 0a | 58 09 09 09 78 2d 3e 66 |rd = x;.|X...x->f|
|00002020| 6f 72 77 61 72 64 20 3d | 20 68 3b 0a 58 09 09 09 |orward =| h;.X...|
|00002030| 72 65 74 75 72 6e 3b 0a | 58 09 09 7d 0a 58 09 7d |return;.|X..}.X.}|
|00002040| 0a 58 09 2f 2a 20 53 61 | 6e 69 74 79 20 63 68 65 |.X./* Sa|nity che|
|00002050| 63 6b 3a 20 64 75 70 6c | 69 63 61 74 65 3f 20 2a |ck: dupl|icate? *|
|00002060| 2f 0a 58 09 69 66 20 28 | 21 73 74 72 63 6d 70 28 |/.X.if (|!strcmp(|
|00002070| 78 2d 3e 6e 61 6d 65 2c | 20 68 2d 3e 6e 61 6d 65 |x->name,| h->name|
|00002080| 29 29 20 7b 0a 58 09 09 | 28 76 6f 69 64 29 20 66 |)) {.X..|(void) f|
|00002090| 70 72 69 6e 74 66 28 73 | 74 64 65 72 72 2c 20 22 |printf(s|tderr, "|
|000020a0| 25 73 20 64 75 70 6c 69 | 63 61 74 65 21 5c 6e 22 |%s dupli|cate!\n"|
|000020b0| 2c 20 68 2d 3e 6e 61 6d | 65 29 3b 0a 58 09 09 72 |, h->nam|e);.X..r|
|000020c0| 65 74 75 72 6e 3b 0a 58 | 09 7d 0a 58 09 2f 2a 20 |eturn;.X|.}.X./* |
|000020d0| 49 6e 73 65 72 74 20 62 | 65 66 6f 72 65 20 78 20 |Insert b|efore x |
|000020e0| 2a 2f 0a 58 09 68 2d 3e | 66 6f 72 77 61 72 64 20 |*/.X.h->|forward |
|000020f0| 3d 20 78 3b 0a 58 09 68 | 2d 3e 62 61 63 6b 77 61 |= x;.X.h|->backwa|
|00002100| 72 64 20 3d 20 78 2d 3e | 62 61 63 6b 77 61 72 64 |rd = x->|backward|
|00002110| 3b 0a 58 09 69 66 20 28 | 78 2d 3e 62 61 63 6b 77 |;.X.if (|x->backw|
|00002120| 61 72 64 29 20 78 2d 3e | 62 61 63 6b 77 61 72 64 |ard) x->|backward|
|00002130| 2d 3e 66 6f 72 77 61 72 | 64 20 3d 20 68 3b 09 2f |->forwar|d = h;./|
|00002140| 2a 20 4d 69 64 64 6c 65 | 20 2a 2f 0a 58 09 65 6c |* Middle| */.X.el|
|00002150| 73 65 20 68 6f 73 74 6c | 69 73 74 20 3d 20 68 3b |se hostl|ist = h;|
|00002160| 09 09 09 09 2f 2a 20 48 | 65 61 64 20 2a 2f 0a 58 |..../* H|ead */.X|
|00002170| 09 78 2d 3e 62 61 63 6b | 77 61 72 64 20 3d 20 68 |.x->back|ward = h|
|00002180| 3b 0a 58 7d 0a 58 0a 58 | 73 74 61 74 69 63 20 6c |;.X}.X.X|static l|
|00002190| 6f 6e 67 20 49 50 63 6f | 6e 76 65 72 74 28 63 68 |ong IPco|nvert(ch|
|000021a0| 29 0a 58 63 68 61 72 20 | 2a 2a 63 68 3b 0a 58 7b |).Xchar |**ch;.X{|
|000021b0| 09 6c 6f 6e 67 20 4e 31 | 2c 20 4e 32 2c 20 4e 33 |.long N1|, N2, N3|
|000021c0| 2c 20 4e 34 3b 0a 58 09 | 4e 31 20 3d 20 73 74 72 |, N4;.X.|N1 = str|
|000021d0| 74 6f 6c 28 2a 63 68 2c | 20 63 68 2c 20 31 30 29 |tol(*ch,| ch, 10)|
|000021e0| 3b 20 20 28 2a 63 68 29 | 2b 2b 3b 0a 58 09 4e 32 |; (*ch)|++;.X.N2|
|000021f0| 20 3d 20 73 74 72 74 6f | 6c 28 2a 63 68 2c 20 63 | = strto|l(*ch, c|
|00002200| 68 2c 20 31 30 29 3b 20 | 20 28 2a 63 68 29 2b 2b |h, 10); | (*ch)++|
|00002210| 3b 0a 58 09 4e 33 20 3d | 20 73 74 72 74 6f 6c 28 |;.X.N3 =| strtol(|
|00002220| 2a 63 68 2c 20 63 68 2c | 20 31 30 29 3b 20 20 28 |*ch, ch,| 10); (|
|00002230| 2a 63 68 29 2b 2b 3b 0a | 58 09 4e 34 20 3d 20 73 |*ch)++;.|X.N4 = s|
|00002240| 74 72 74 6f 6c 28 2a 63 | 68 2c 20 63 68 2c 20 31 |trtol(*c|h, ch, 1|
|00002250| 30 29 3b 20 20 28 2a 63 | 68 29 2b 2b 3b 0a 58 09 |0); (*c|h)++;.X.|
|00002260| 72 65 74 75 72 6e 20 28 | 4e 31 20 3c 3c 20 32 34 |return (|N1 << 24|
|00002270| 29 20 7c 20 28 4e 32 20 | 3c 3c 20 31 36 29 20 7c |) | (N2 |<< 16) ||
|00002280| 20 28 4e 33 20 3c 3c 20 | 38 29 20 7c 20 4e 34 3b | (N3 << |8) | N4;|
|00002290| 0a 58 7d 0a 58 0a 58 73 | 74 61 74 69 63 20 63 68 |.X}.X.Xs|tatic ch|
|000022a0| 61 72 20 2a 65 78 74 72 | 61 63 74 6e 61 6d 65 28 |ar *extr|actname(|
|000022b0| 63 68 29 0a 58 63 68 61 | 72 20 2a 2a 63 68 3b 0a |ch).Xcha|r **ch;.|
|000022c0| 58 7b 09 63 68 61 72 20 | 2a 69 74 3b 0a 58 09 63 |X{.char |*it;.X.c|
|000022d0| 68 61 72 20 2a 6e 61 6d | 65 3b 0a 58 09 69 6e 74 |har *nam|e;.X.int|
|000022e0| 20 6e 20 3d 20 30 3b 0a | 58 09 77 68 69 6c 65 20 | n = 0;.|X.while |
|000022f0| 28 69 73 73 70 61 63 65 | 28 2a 2a 63 68 29 29 20 |(isspace|(**ch)) |
|00002300| 28 2a 63 68 29 2b 2b 3b | 0a 58 09 69 66 20 28 2a |(*ch)++;|.X.if (*|
|00002310| 2a 63 68 20 3d 3d 20 27 | 5c 30 27 20 7c 7c 20 2a |*ch == '|\0' || *|
|00002320| 2a 63 68 20 3d 3d 20 27 | 23 27 29 20 72 65 74 75 |*ch == '|#') retu|
|00002330| 72 6e 20 4e 55 4c 4c 3b | 0a 58 09 69 74 20 3d 20 |rn NULL;|.X.it = |
|00002340| 2a 63 68 3b 0a 58 09 77 | 68 69 6c 65 20 28 21 69 |*ch;.X.w|hile (!i|
|00002350| 73 73 70 61 63 65 28 2a | 2a 63 68 29 29 20 7b 0a |sspace(*|*ch)) {.|
|00002360| 58 09 09 28 2a 63 68 29 | 2b 2b 3b 0a 58 09 09 6e |X..(*ch)|++;.X..n|
|00002370| 2b 2b 3b 0a 58 09 7d 0a | 58 09 2a 2a 63 68 20 3d |++;.X.}.|X.**ch =|
|00002380| 20 27 5c 30 27 3b 20 20 | 28 2a 63 68 29 2b 2b 3b | '\0'; |(*ch)++;|
|00002390| 0a 58 09 6e 61 6d 65 20 | 3d 20 28 63 68 61 72 20 |.X.name |= (char |
|000023a0| 2a 29 20 6d 61 6c 6c 6f | 63 28 6e 20 2b 20 31 29 |*) mallo|c(n + 1)|
|000023b0| 3b 0a 58 09 73 74 72 63 | 70 79 28 6e 61 6d 65 2c |;.X.strc|py(name,|
|000023c0| 20 69 74 29 3b 0a 58 09 | 72 65 74 75 72 6e 20 6e | it);.X.|return n|
|000023d0| 61 6d 65 3b 0a 58 7d 0a | 58 0a 58 73 74 61 74 69 |ame;.X}.|X.Xstati|
|000023e0| 63 20 77 69 72 65 20 2a | 66 69 6e 64 57 69 72 65 |c wire *|findWire|
|000023f0| 28 49 50 29 0a 58 6c 6f | 6e 67 20 49 50 3b 0a 58 |(IP).Xlo|ng IP;.X|
|00002400| 7b 09 69 6e 74 20 6e 3b | 0a 58 09 77 69 72 65 20 |{.int n;|.X.wire |
|00002410| 2a 77 3b 0a 58 09 69 66 | 20 28 49 50 20 3d 3d 20 |*w;.X.if| (IP == |
|00002420| 30 29 20 72 65 74 75 72 | 6e 20 4e 55 4c 4c 3b 0a |0) retur|n NULL;.|
|00002430| 58 09 66 6f 72 20 28 6e | 20 3d 20 30 2c 20 77 20 |X.for (n| = 0, w |
|00002440| 3d 20 77 69 72 65 54 61 | 62 6c 65 3b 20 6e 20 3c |= wireTa|ble; n <|
|00002450| 20 77 69 72 65 73 3b 20 | 6e 2b 2b 2c 20 77 2b 2b | wires; |n++, w++|
|00002460| 29 20 7b 0a 58 09 09 69 | 66 20 28 28 49 50 20 26 |) {.X..i|f ((IP &|
|00002470| 20 77 2d 3e 6e 65 74 6d | 61 73 6b 29 20 3d 3d 20 | w->netm|ask) == |
|00002480| 77 2d 3e 6e 75 6d 62 65 | 72 29 20 7b 0a 58 09 09 |w->numbe|r) {.X..|
|00002490| 09 72 65 74 75 72 6e 20 | 77 3b 0a 58 09 09 7d 0a |.return |w;.X..}.|
|000024a0| 58 09 7d 0a 58 09 72 65 | 74 75 72 6e 20 4e 55 4c |X.}.X.re|turn NUL|
|000024b0| 4c 3b 0a 58 7d 0a 58 0a | 58 73 74 61 74 69 63 20 |L;.X}.X.|Xstatic |
|000024c0| 64 6f 6d 61 69 6e 20 2a | 66 69 6e 64 44 6f 6d 61 |domain *|findDoma|
|000024d0| 69 6e 28 6e 61 6d 65 29 | 0a 58 63 68 61 72 20 2a |in(name)|.Xchar *|
|000024e0| 6e 61 6d 65 3b 0a 58 7b | 09 69 6e 74 20 6e 3b 0a |name;.X{|.int n;.|
|000024f0| 58 09 64 6f 6d 61 69 6e | 20 2a 64 3b 0a 58 09 66 |X.domain| *d;.X.f|
|00002500| 6f 72 20 28 6e 20 3d 20 | 30 2c 20 64 20 3d 20 64 |or (n = |0, d = d|
|00002510| 6f 6d 61 69 6e 54 61 62 | 6c 65 3b 20 6e 20 3c 20 |omainTab|le; n < |
|00002520| 64 6f 6d 61 69 6e 73 3b | 20 6e 2b 2b 2c 20 64 2b |domains;| n++, d+|
|00002530| 2b 29 20 7b 0a 58 09 09 | 69 66 20 28 21 73 74 72 |+) {.X..|if (!str|
|00002540| 63 6d 70 28 6e 61 6d 65 | 2c 20 64 2d 3e 64 6f 6d |cmp(name|, d->dom|
|00002550| 61 69 6e 6e 61 6d 65 29 | 29 20 7b 0a 58 09 09 09 |ainname)|) {.X...|
|00002560| 72 65 74 75 72 6e 20 64 | 3b 0a 58 09 09 7d 0a 58 |return d|;.X..}.X|
|00002570| 09 7d 0a 58 09 72 65 74 | 75 72 6e 20 4e 55 4c 4c |.}.X.ret|urn NULL|
|00002580| 3b 0a 58 7d 0a 58 0a 58 | 73 74 61 74 69 63 20 76 |;.X}.X.X|static v|
|00002590| 6f 69 64 20 72 65 61 64 | 68 6f 73 74 73 28 29 0a |oid read|hosts().|
|000025a0| 58 7b 09 46 49 4c 45 20 | 2a 68 6f 73 74 73 3b 0a |X{.FILE |*hosts;.|
|000025b0| 58 09 68 6f 73 74 20 2a | 68 2c 20 2a 70 68 3b 0a |X.host *|h, *ph;.|
|000025c0| 58 09 63 68 61 72 20 2a | 63 68 3b 0a 58 09 63 68 |X.char *|ch;.X.ch|
|000025d0| 61 72 20 62 75 66 66 65 | 72 5b 4c 49 4e 45 42 55 |ar buffe|r[LINEBU|
|000025e0| 46 46 45 52 5d 3b 0a 58 | 09 6c 6f 6e 67 20 49 50 |FFER];.X|.long IP|
|000025f0| 3b 0a 58 09 63 68 61 72 | 20 2a 70 72 69 6d 61 72 |;.X.char| *primar|
|00002600| 79 3b 0a 58 09 63 68 61 | 72 20 2a 61 6c 69 61 73 |y;.X.cha|r *alias|
|00002610| 3b 0a 58 09 77 69 72 65 | 20 2a 77 3b 0a 58 0a 58 |;.X.wire| *w;.X.X|
|00002620| 09 69 66 20 28 28 68 6f | 73 74 73 20 3d 20 66 6f |.if ((ho|sts = fo|
|00002630| 70 65 6e 28 48 4f 53 54 | 53 2c 20 22 72 22 29 29 |pen(HOST|S, "r"))|
|00002640| 20 3d 3d 20 4e 55 4c 4c | 29 20 7b 0a 58 09 09 28 | == NULL|) {.X..(|
|00002650| 76 6f 69 64 29 20 66 70 | 72 69 6e 74 66 28 73 74 |void) fp|rintf(st|
|00002660| 64 65 72 72 2c 20 22 46 | 61 69 6c 65 64 20 74 6f |derr, "F|ailed to|
|00002670| 20 6f 70 65 6e 20 25 73 | 5c 6e 22 2c 20 48 4f 53 | open %s|\n", HOS|
|00002680| 54 53 29 3b 0a 58 09 09 | 65 78 69 74 28 31 29 3b |TS);.X..|exit(1);|
|00002690| 0a 58 09 7d 0a 58 0a 58 | 09 66 6f 72 20 28 3b 3b |.X.}.X.X|.for (;;|
|000026a0| 29 20 7b 0a 58 09 09 69 | 66 20 28 28 63 68 20 3d |) {.X..i|f ((ch =|
|000026b0| 20 66 67 65 74 73 28 62 | 75 66 66 65 72 2c 20 4c | fgets(b|uffer, L|
|000026c0| 49 4e 45 42 55 46 46 45 | 52 2c 20 68 6f 73 74 73 |INEBUFFE|R, hosts|
|000026d0| 29 29 20 3d 3d 20 4e 55 | 4c 4c 29 20 62 72 65 61 |)) == NU|LL) brea|
|000026e0| 6b 3b 0a 58 09 09 77 68 | 69 6c 65 20 28 69 73 73 |k;.X..wh|ile (iss|
|000026f0| 70 61 63 65 28 2a 63 68 | 29 29 20 63 68 2b 2b 3b |pace(*ch|)) ch++;|
|00002700| 0a 58 09 09 69 66 20 28 | 2a 63 68 20 3d 3d 20 27 |.X..if (|*ch == '|
|00002710| 5c 30 27 20 7c 7c 20 2a | 63 68 20 3d 3d 20 27 23 |\0' || *|ch == '#|
|00002720| 27 29 20 63 6f 6e 74 69 | 6e 75 65 3b 0a 58 09 09 |') conti|nue;.X..|
|00002730| 49 50 20 3d 20 49 50 63 | 6f 6e 76 65 72 74 28 26 |IP = IPc|onvert(&|
|00002740| 63 68 29 3b 0a 58 09 09 | 69 66 20 28 28 77 20 3d |ch);.X..|if ((w =|
|00002750| 20 66 69 6e 64 57 69 72 | 65 28 49 50 29 29 20 3d | findWir|e(IP)) =|
|00002760| 3d 20 4e 55 4c 4c 29 20 | 63 6f 6e 74 69 6e 75 65 |= NULL) |continue|
|00002770| 3b 0a 58 09 09 70 72 69 | 6d 61 72 79 20 3d 20 65 |;.X..pri|mary = e|
|00002780| 78 74 72 61 63 74 6e 61 | 6d 65 28 26 63 68 29 3b |xtractna|me(&ch);|
|00002790| 0a 58 09 09 70 68 20 3d | 20 28 68 6f 73 74 20 2a |.X..ph =| (host *|
|000027a0| 29 20 6d 61 6c 6c 6f 63 | 28 73 69 7a 65 6f 66 28 |) malloc|(sizeof(|
|000027b0| 68 6f 73 74 29 29 3b 0a | 58 09 09 70 68 2d 3e 49 |host));.|X..ph->I|
|000027c0| 50 20 3d 20 49 50 3b 0a | 58 09 09 70 68 2d 3e 77 |P = IP;.|X..ph->w|
|000027d0| 20 3d 20 77 3b 0a 58 09 | 09 70 68 2d 3e 6e 61 6d | = w;.X.|.ph->nam|
|000027e0| 65 20 3d 20 70 72 69 6d | 61 72 79 3b 0a 58 09 09 |e = prim|ary;.X..|
|000027f0| 70 68 2d 3e 70 72 69 6d | 61 72 79 20 3d 20 4e 55 |ph->prim|ary = NU|
|00002800| 4c 4c 3b 0a 58 09 09 61 | 64 64 68 6f 73 74 28 70 |LL;.X..a|ddhost(p|
|00002810| 68 29 3b 0a 58 09 09 77 | 68 69 6c 65 20 28 2a 63 |h);.X..w|hile (*c|
|00002820| 68 20 21 3d 20 27 5c 30 | 27 29 20 7b 0a 58 09 09 |h != '\0|') {.X..|
|00002830| 09 61 6c 69 61 73 20 3d | 20 65 78 74 72 61 63 74 |.alias =| extract|
|00002840| 6e 61 6d 65 28 26 63 68 | 29 3b 0a 58 09 09 09 69 |name(&ch|);.X...i|
|00002850| 66 20 28 61 6c 69 61 73 | 20 3d 3d 20 4e 55 4c 4c |f (alias| == NULL|
|00002860| 29 20 62 72 65 61 6b 3b | 0a 58 09 09 09 68 20 3d |) break;|.X...h =|
|00002870| 20 28 68 6f 73 74 20 2a | 29 20 6d 61 6c 6c 6f 63 | (host *|) malloc|
|00002880| 28 73 69 7a 65 6f 66 28 | 68 6f 73 74 29 29 3b 0a |(sizeof(|host));.|
|00002890| 58 09 09 09 68 2d 3e 49 | 50 20 3d 20 30 3b 0a 58 |X...h->I|P = 0;.X|
|000028a0| 09 09 09 68 2d 3e 77 20 | 3d 20 77 3b 0a 58 09 09 |...h->w |= w;.X..|
|000028b0| 09 68 2d 3e 6e 61 6d 65 | 20 3d 20 61 6c 69 61 73 |.h->name| = alias|
|000028c0| 3b 0a 58 09 09 09 68 2d | 3e 70 72 69 6d 61 72 79 |;.X...h-|>primary|
|000028d0| 20 3d 20 70 68 3b 0a 58 | 09 09 09 61 64 64 68 6f | = ph;.X|...addho|
|000028e0| 73 74 28 68 29 3b 0a 58 | 09 09 7d 0a 58 09 7d 0a |st(h);.X|..}.X.}.|
|000028f0| 58 09 28 76 6f 69 64 29 | 20 66 63 6c 6f 73 65 28 |X.(void)| fclose(|
|00002900| 68 6f 73 74 73 29 3b 0a | 58 7d 0a 58 0a 58 73 74 |hosts);.|X}.X.Xst|
|00002910| 61 74 69 63 20 68 6f 73 | 74 20 2a 66 69 6e 64 50 |atic hos|t *findP|
|00002920| 72 69 6e 63 69 70 61 6c | 28 6c 69 6b 65 29 0a 58 |rincipal|(like).X|
|00002930| 68 6f 73 74 20 2a 6c 69 | 6b 65 3b 0a 58 7b 09 68 |host *li|ke;.X{.h|
|00002940| 6f 73 74 20 2a 68 3b 0a | 58 09 69 6e 74 20 6c 2c |ost *h;.|X.int l,|
|00002950| 20 6e 3b 0a 58 0a 58 09 | 68 20 3d 20 6c 69 6b 65 | n;.X.X.|h = like|
|00002960| 2d 3e 62 61 63 6b 77 61 | 72 64 3b 0a 58 09 6c 20 |->backwa|rd;.X.l |
|00002970| 3d 20 73 74 72 6c 65 6e | 28 6c 69 6b 65 2d 3e 6e |= strlen|(like->n|
|00002980| 61 6d 65 29 3b 0a 58 09 | 77 68 69 6c 65 20 28 68 |ame);.X.|while (h|
|00002990| 29 20 7b 0a 58 09 09 69 | 66 20 28 2a 28 68 2d 3e |) {.X..i|f (*(h->|
|000029a0| 6e 61 6d 65 29 20 21 3d | 20 2a 28 6c 69 6b 65 2d |name) !=| *(like-|
|000029b0| 3e 6e 61 6d 65 29 29 20 | 72 65 74 75 72 6e 20 4e |>name)) |return N|
|000029c0| 55 4c 4c 3b 0a 58 09 09 | 6e 20 3d 20 73 74 72 6c |ULL;.X..|n = strl|
|000029d0| 65 6e 28 68 2d 3e 6e 61 | 6d 65 29 3b 0a 58 09 09 |en(h->na|me);.X..|
|000029e0| 69 66 20 28 28 6e 20 3c | 20 6c 29 20 26 26 20 21 |if ((n <| l) && !|
|000029f0| 69 73 61 6c 6e 75 6d 28 | 6c 69 6b 65 2d 3e 6e 61 |isalnum(|like->na|
|00002a00| 6d 65 5b 6e 5d 29 20 26 | 26 0a 58 09 09 09 09 21 |me[n]) &|&.X....!|
|00002a10| 73 74 72 6e 63 6d 70 28 | 68 2d 3e 6e 61 6d 65 2c |strncmp(|h->name,|
|00002a20| 20 6c 69 6b 65 2d 3e 6e | 61 6d 65 2c 20 6e 29 29 | like->n|ame, n))|
|00002a30| 20 7b 0a 58 09 09 09 72 | 65 74 75 72 6e 20 68 3b | {.X...r|eturn h;|
|00002a40| 0a 58 09 09 7d 0a 58 09 | 09 68 20 3d 20 68 2d 3e |.X..}.X.|.h = h->|
|00002a50| 62 61 63 6b 77 61 72 64 | 3b 0a 58 09 7d 0a 58 09 |backward|;.X.}.X.|
|00002a60| 72 65 74 75 72 6e 20 4e | 55 4c 4c 3b 0a 58 7d 0a |return N|ULL;.X}.|
|00002a70| 58 0a 58 23 64 65 66 69 | 6e 65 20 20 70 72 69 6e |X.X#defi|ne prin|
|00002a80| 74 49 50 28 66 69 6c 65 | 2c 20 49 50 29 20 5c 0a |tIP(file|, IP) \.|
|00002a90| 58 09 28 76 6f 69 64 29 | 20 66 70 72 69 6e 74 66 |X.(void)| fprintf|
|00002aa0| 28 66 69 6c 65 2c 20 22 | 25 64 2e 25 64 2e 25 64 |(file, "|%d.%d.%d|
|00002ab0| 2e 25 64 22 2c 20 5c 0a | 58 09 09 28 49 50 20 3e |.%d", \.|X..(IP >|
|00002ac0| 3e 20 32 34 29 20 26 20 | 32 35 35 2c 20 28 49 50 |> 24) & |255, (IP|
|00002ad0| 20 3e 3e 20 31 36 29 20 | 26 20 32 35 35 2c 20 28 | >> 16) |& 255, (|
|00002ae0| 49 50 20 3e 3e 20 38 29 | 20 26 20 32 35 35 2c 20 |IP >> 8)| & 255, |
|00002af0| 49 50 20 26 20 32 35 35 | 29 0a 58 0a 58 2f 2a 20 |IP & 255|).X.X/* |
|00002b00| 70 72 69 6e 74 68 6f 73 | 74 73 20 68 61 73 20 66 |printhos|ts has f|
|00002b10| 6f 75 72 20 63 61 73 65 | 73 3a 0a 58 20 2a 20 20 |our case|s:.X * |
|00002b20| 20 31 09 49 50 20 61 64 | 64 72 65 73 73 2c 20 6e | 1.IP ad|dress, n|
|00002b30| 6f 20 70 72 69 6e 63 69 | 70 61 6c 20 65 6e 74 72 |o princi|pal entr|
|00002b40| 79 20 2d 2d 20 77 72 69 | 74 65 20 74 68 65 20 6e |y -- wri|te the n|
|00002b50| 61 6d 65 20 61 73 20 69 | 74 20 73 74 61 6e 64 73 |ame as i|t stands|
|00002b60| 2c 20 70 6c 75 73 0a 58 | 20 2a 09 74 68 65 20 72 |, plus.X| *.the r|
|00002b70| 65 76 65 72 73 65 20 6e | 61 6d 65 2c 20 61 67 61 |everse n|ame, aga|
|00002b80| 69 6e 20 61 73 20 69 74 | 20 73 74 61 6e 64 73 2e |in as it| stands.|
|00002b90| 0a 58 20 2a 20 20 20 32 | 09 49 50 20 61 64 64 72 |.X * 2|.IP addr|
|00002ba0| 65 73 73 20 70 6c 75 73 | 20 70 72 69 6e 63 69 70 |ess plus| princip|
|00002bb0| 61 6c 20 65 6e 74 72 79 | 20 2d 2d 20 77 72 69 74 |al entry| -- writ|
|00002bc0| 65 20 6f 75 74 20 74 68 | 65 20 61 64 64 72 65 73 |e out th|e addres|
|00002bd0| 73 20 61 73 20 66 6f 72 | 20 74 68 65 0a 58 20 2a |s as for| the.X *|
|00002be0| 09 70 72 69 6e 63 69 70 | 61 6c 20 65 6e 74 72 79 |.princip|al entry|
|00002bf0| 2c 20 70 6c 75 73 20 74 | 68 65 20 63 75 72 72 65 |, plus t|he curre|
|00002c00| 6e 74 20 6e 61 6d 65 20 | 61 73 20 61 6e 6f 74 68 |nt name |as anoth|
|00002c10| 65 72 20 41 20 52 52 2e | 20 20 57 72 69 74 65 20 |er A RR.| Write |
|00002c20| 74 68 65 0a 58 20 2a 09 | 72 65 76 65 72 73 65 20 |the.X *.|reverse |
|00002c30| 65 6e 74 72 79 20 61 73 | 20 70 6f 69 6e 74 69 6e |entry as| pointin|
|00002c40| 67 20 74 6f 20 74 68 65 | 20 70 72 69 6e 63 69 70 |g to the| princip|
|00002c50| 61 6c 20 6e 61 6d 65 2e | 0a 58 20 2a 20 20 20 33 |al name.|.X * 3|
|00002c60| 09 61 6c 69 61 73 2c 20 | 6e 6f 20 70 72 69 6e 63 |.alias, |no princ|
|00002c70| 69 70 61 6c 20 65 6e 74 | 72 79 20 2d 2d 20 77 72 |ipal ent|ry -- wr|
|00002c80| 69 74 65 20 61 20 43 4e | 41 4d 45 20 52 52 20 70 |ite a CN|AME RR p|
|00002c90| 6f 69 6e 74 69 6e 67 20 | 74 6f 20 74 68 65 20 70 |ointing |to the p|
|00002ca0| 72 69 6d 61 72 79 2e 0a | 58 20 2a 20 20 20 34 09 |rimary..|X * 4.|
|00002cb0| 61 6c 69 61 73 20 70 6c | 75 73 20 70 72 69 6e 63 |alias pl|us princ|
|00002cc0| 69 70 61 6c 20 65 6e 74 | 72 79 20 2d 2d 20 77 72 |ipal ent|ry -- wr|
|00002cd0| 69 74 65 20 61 6e 20 41 | 20 52 52 20 77 69 74 68 |ite an A| RR with|
|00002ce0| 20 74 68 65 20 70 72 69 | 6d 61 72 79 27 73 20 61 | the pri|mary's a|
|00002cf0| 64 64 72 65 73 73 2e 0a | 58 20 2a 0a 58 20 2a 20 |ddress..|X *.X * |
|00002d00| 46 6f 72 20 65 78 61 6d | 70 6c 65 2c 20 73 75 70 |For exam|ple, sup|
|00002d10| 70 6f 73 65 20 74 68 65 | 20 2f 65 74 63 2f 68 6f |pose the| /etc/ho|
|00002d20| 73 74 73 20 66 69 6c 65 | 20 68 61 73 20 74 68 65 |sts file| has the|
|00002d30| 20 66 6f 6c 6c 6f 77 69 | 6e 67 3a 0a 58 20 2a 09 | followi|ng:.X *.|
|00002d40| 31 32 39 2e 32 31 35 2e | 36 34 2e 34 38 20 20 62 |129.215.|64.48 b|
|00002d50| 61 6c 65 73 68 61 72 65 | 20 62 61 6c 65 73 68 61 |aleshare| balesha|
|00002d60| 72 65 2d 62 20 61 67 66 | 61 68 6f 73 74 0a 58 20 |re-b agf|ahost.X |
|00002d70| 2a 09 32 39 2e 32 31 35 | 2e 31 36 30 2e 31 35 35 |*.29.215|.160.155|
|00002d80| 20 62 61 6c 65 73 68 61 | 72 65 2d 67 77 20 62 61 | balesha|re-gw ba|
|00002d90| 6c 65 73 68 61 72 65 2d | 61 0a 58 20 2a 20 54 68 |leshare-|a.X * Th|
|00002da0| 65 6e 20 62 61 6c 65 73 | 68 61 72 65 20 69 73 20 |en bales|hare is |
|00002db0| 63 61 73 65 20 31 2c 20 | 62 61 6c 65 73 68 61 72 |case 1, |baleshar|
|00002dc0| 65 2d 67 77 20 69 73 20 | 63 61 73 65 20 32 2c 20 |e-gw is |case 2, |
|00002dd0| 62 61 6c 65 73 68 61 72 | 65 2d 61 20 61 6e 64 0a |baleshar|e-a and.|
|00002de0| 58 20 2a 20 62 61 6c 65 | 73 68 61 72 65 2d 62 20 |X * bale|share-b |
|00002df0| 61 72 65 20 63 61 73 65 | 20 34 2c 20 61 6e 64 20 |are case| 4, and |
|00002e00| 61 67 66 61 68 6f 73 74 | 20 69 73 20 63 61 73 65 |agfahost| is case|
|00002e10| 20 33 2e 20 20 43 6f 6e | 66 75 73 65 64 3f 20 20 | 3. Con|fused? |
|00002e20| 42 54 57 2c 20 63 68 61 | 6e 67 69 6e 67 0a 58 20 |BTW, cha|nging.X |
|00002e30| 2a 20 62 61 6c 65 73 68 | 61 72 65 2d 67 77 20 74 |* balesh|are-gw t|
|00002e40| 6f 20 66 72 65 64 2c 20 | 73 61 79 2c 20 77 6f 75 |o fred, |say, wou|
|00002e50| 6c 64 20 62 72 65 61 6b | 20 74 68 65 20 61 6c 67 |ld break| the alg|
|00002e60| 6f 72 69 74 68 6d 20 2d | 2d 20 74 68 65 20 6d 61 |orithm -|- the ma|
|00002e70| 69 6e 20 6e 61 6d 65 20 | 6f 66 20 74 68 65 0a 58 |in name |of the.X|
|00002e80| 20 2a 20 73 65 63 6f 6e | 64 20 69 6e 74 65 72 66 | * secon|d interf|
|00002e90| 61 63 65 20 62 65 74 74 | 65 72 20 62 65 20 72 65 |ace bett|er be re|
|00002ea0| 6c 61 74 65 64 20 74 6f | 20 74 68 65 20 6d 61 69 |lated to| the mai|
|00002eb0| 6e 20 6e 61 6d 65 20 6f | 66 20 74 68 65 20 66 69 |n name o|f the fi|
|00002ec0| 72 73 74 21 0a 58 20 2a | 2f 0a 58 0a 58 76 6f 69 |rst!.X *|/.X.Xvoi|
|00002ed0| 64 20 70 72 69 6e 74 68 | 6f 73 74 73 28 29 0a 58 |d printh|osts().X|
|00002ee0| 7b 09 68 6f 73 74 20 2a | 68 2c 20 2a 6d 2c 20 2a |{.host *|h, *m, *|
|00002ef0| 78 3b 0a 58 09 77 69 72 | 65 20 2a 77 3b 0a 58 09 |x;.X.wir|e *w;.X.|
|00002f00| 46 49 4c 45 20 2a 66 3b | 0a 58 09 69 6e 74 20 64 |FILE *f;|.X.int d|
|00002f10| 6f 74 74 65 64 3b 0a 58 | 0a 58 09 68 20 3d 20 68 |otted;.X|.X.h = h|
|00002f20| 6f 73 74 6c 69 73 74 3b | 0a 58 09 77 68 69 6c 65 |ostlist;|.X.while|
|00002f30| 20 28 68 29 20 7b 0a 58 | 09 09 6d 20 3d 20 66 69 | (h) {.X|..m = fi|
|00002f40| 6e 64 50 72 69 6e 63 69 | 70 61 6c 28 68 29 3b 0a |ndPrinci|pal(h);.|
|00002f50| 58 09 09 69 66 20 28 68 | 2d 3e 49 50 29 20 7b 0a |X..if (h|->IP) {.|
|00002f60| 58 09 09 09 69 66 20 28 | 6d 29 20 7b 0a 58 09 09 |X...if (|m) {.X..|
|00002f70| 09 09 2f 2a 20 43 61 73 | 65 20 32 20 2a 2f 0a 58 |../* Cas|e 2 */.X|
|00002f80| 09 09 09 09 2f 2a 20 41 | 20 52 52 20 66 6f 72 20 |..../* A| RR for |
|00002f90| 6e 61 6d 65 20 2a 2f 0a | 58 09 09 09 09 28 76 6f |name */.|X....(vo|
|00002fa0| 69 64 29 20 66 70 72 69 | 6e 74 66 28 6d 2d 3e 77 |id) fpri|ntf(m->w|
|00002fb0| 2d 3e 64 2d 3e 66 69 6c | 65 2c 0a 58 09 09 09 09 |->d->fil|e,.X....|
|00002fc0| 09 22 25 2d 32 33 73 20 | 49 4e 5c 74 41 5c 74 22 |."%-23s |IN\tA\t"|
|00002fd0| 2c 20 68 2d 3e 6e 61 6d | 65 29 3b 0a 58 09 09 09 |, h->nam|e);.X...|
|00002fe0| 09 70 72 69 6e 74 49 50 | 28 6d 2d 3e 77 2d 3e 64 |.printIP|(m->w->d|
|00002ff0| 2d 3e 66 69 6c 65 2c 20 | 68 2d 3e 49 50 29 3b 0a |->file, |h->IP);.|
|00003000| 58 09 09 09 09 28 76 6f | 69 64 29 20 70 75 74 63 |X....(vo|id) putc|
|00003010| 28 27 5c 6e 27 2c 20 6d | 2d 3e 77 2d 3e 64 2d 3e |('\n', m|->w->d->|
|00003020| 66 69 6c 65 29 3b 0a 58 | 09 09 09 09 69 66 20 28 |file);.X|....if (|
|00003030| 6d 2d 3e 77 2d 3e 64 2d | 3e 4d 58 64 61 74 61 29 |m->w->d-|>MXdata)|
|00003040| 20 7b 0a 58 09 09 09 09 | 09 28 76 6f 69 64 29 20 | {.X....|.(void) |
|00003050| 66 70 75 74 73 28 6d 2d | 3e 77 2d 3e 64 2d 3e 4d |fputs(m-|>w->d->M|
|00003060| 58 64 61 74 61 2c 0a 58 | 09 09 09 09 09 09 6d 2d |Xdata,.X|......m-|
|00003070| 3e 77 2d 3e 64 2d 3e 66 | 69 6c 65 29 3b 0a 58 09 |>w->d->f|ile);.X.|
|00003080| 09 09 09 7d 0a 58 09 09 | 09 09 2f 2a 20 41 20 52 |...}.X..|../* A R|
|00003090| 52 20 66 6f 72 20 70 72 | 69 6e 63 69 70 61 6c 27 |R for pr|incipal'|
|000030a0| 73 20 6e 61 6d 65 20 2a | 2f 0a 58 09 09 09 09 28 |s name *|/.X....(|
|000030b0| 76 6f 69 64 29 20 66 70 | 72 69 6e 74 66 28 6d 2d |void) fp|rintf(m-|
|000030c0| 3e 77 2d 3e 64 2d 3e 66 | 69 6c 65 2c 0a 58 09 09 |>w->d->f|ile,.X..|
|000030d0| 09 09 09 22 25 2d 32 33 | 73 20 49 4e 5c 74 41 5c |..."%-23|s IN\tA\|
|000030e0| 74 22 2c 20 6d 2d 3e 6e | 61 6d 65 29 3b 0a 58 09 |t", m->n|ame);.X.|
|000030f0| 09 09 09 70 72 69 6e 74 | 49 50 28 6d 2d 3e 77 2d |...print|IP(m->w-|
|00003100| 3e 64 2d 3e 66 69 6c 65 | 2c 20 68 2d 3e 49 50 29 |>d->file|, h->IP)|
|00003110| 3b 0a 58 09 09 09 09 28 | 76 6f 69 64 29 20 70 75 |;.X....(|void) pu|
|00003120| 74 63 28 27 5c 6e 27 2c | 20 6d 2d 3e 77 2d 3e 64 |tc('\n',| m->w->d|
|00003130| 2d 3e 66 69 6c 65 29 3b | 0a 58 09 09 09 09 2f 2a |->file);|.X..../*|
|00003140| 20 62 61 63 6b 2d 70 6f | 69 6e 74 65 72 20 2d 3e | back-po|inter ->|
|00003150| 20 70 72 69 6e 63 69 70 | 61 6c 20 2a 2f 0a 58 09 | princip|al */.X.|
|00003160| 09 09 09 28 76 6f 69 64 | 29 20 66 70 72 69 6e 74 |...(void|) fprint|
|00003170| 66 28 68 2d 3e 77 2d 3e | 66 69 6c 65 2c 0a 58 09 |f(h->w->|file,.X.|
|00003180| 09 09 09 09 22 25 64 5c | 74 49 4e 5c 74 50 54 52 |...."%d\|tIN\tPTR|
|00003190| 5c 74 25 73 2e 25 73 2e | 5c 6e 22 2c 0a 58 09 09 |\t%s.%s.|\n",.X..|
|000031a0| 09 09 09 68 2d 3e 49 50 | 20 26 20 28 7e 68 2d 3e |...h->IP| & (~h->|
|000031b0| 77 2d 3e 6e 65 74 6d 61 | 73 6b 29 2c 0a 58 09 09 |w->netma|sk),.X..|
|000031c0| 09 09 09 6d 2d 3e 6e 61 | 6d 65 2c 20 6d 2d 3e 77 |...m->na|me, m->w|
|000031d0| 2d 3e 64 2d 3e 64 6f 6d | 61 69 6e 6e 61 6d 65 29 |->d->dom|ainname)|
|000031e0| 3b 0a 58 09 09 09 09 69 | 66 20 28 6d 2d 3e 77 2d |;.X....i|f (m->w-|
|000031f0| 3e 64 2d 3e 6f 74 68 65 | 72 29 20 7b 0a 58 09 09 |>d->othe|r) {.X..|
|00003200| 09 09 09 28 76 6f 69 64 | 29 20 66 70 72 69 6e 74 |...(void|) fprint|
|00003210| 66 28 6d 2d 3e 77 2d 3e | 64 2d 3e 6f 74 68 65 72 |f(m->w->|d->other|
|00003220| 2c 0a 58 09 09 09 09 09 | 09 22 25 2d 32 33 73 20 |,.X.....|."%-23s |
|00003230| 49 4e 5c 74 43 4e 41 4d | 45 5c 74 25 73 2e 25 73 |IN\tCNAM|E\t%s.%s|
|00003240| 2e 5c 6e 22 2c 0a 58 09 | 09 09 09 09 09 68 2d 3e |.\n",.X.|.....h->|
|00003250| 6e 61 6d 65 2c 20 6d 2d | 3e 6e 61 6d 65 2c 0a 58 |name, m-|>name,.X|
|00003260| 09 09 09 09 09 09 6d 2d | 3e 77 2d 3e 64 2d 3e 64 |......m-|>w->d->d|
|00003270| 6f 6d 61 69 6e 6e 61 6d | 65 29 3b 0a 58 09 09 09 |omainnam|e);.X...|
|00003280| 09 7d 0a 58 09 09 09 7d | 0a 58 09 09 09 65 6c 73 |.}.X...}|.X...els|
|00003290| 65 20 7b 0a 58 09 09 09 | 09 2f 2a 20 43 61 73 65 |e {.X...|./* Case|
|000032a0| 20 31 20 2a 2f 0a 58 09 | 09 09 09 64 6f 74 74 65 | 1 */.X.|...dotte|
|000032b0| 64 20 3d 20 28 69 6e 74 | 29 20 69 6e 64 65 78 28 |d = (int|) index(|
|000032c0| 68 2d 3e 6e 61 6d 65 2c | 20 27 2e 27 29 3b 0a 58 |h->name,| '.');.X|
|000032d0| 09 09 09 09 69 66 20 28 | 21 64 6f 74 74 65 64 29 |....if (|!dotted)|
|000032e0| 20 7b 0a 58 09 09 09 09 | 09 28 76 6f 69 64 29 20 | {.X....|.(void) |
|000032f0| 66 70 72 69 6e 74 66 28 | 68 2d 3e 77 2d 3e 64 2d |fprintf(|h->w->d-|
|00003300| 3e 66 69 6c 65 2c 0a 58 | 09 09 09 09 09 09 22 25 |>file,.X|......"%|
|00003310| 2d 32 33 73 20 49 4e 5c | 74 41 5c 74 22 2c 20 68 |-23s IN\|tA\t", h|
|00003320| 2d 3e 6e 61 6d 65 29 3b | 0a 58 09 09 09 09 09 70 |->name);|.X.....p|
|00003330| 72 69 6e 74 49 50 28 68 | 2d 3e 77 2d 3e 64 2d 3e |rintIP(h|->w->d->|
|00003340| 66 69 6c 65 2c 20 68 2d | 3e 49 50 29 3b 0a 58 09 |file, h-|>IP);.X.|
|00003350| 09 09 09 09 28 76 6f 69 | 64 29 20 70 75 74 63 28 |....(voi|d) putc(|
|00003360| 27 5c 6e 27 2c 20 68 2d | 3e 77 2d 3e 64 2d 3e 66 |'\n', h-|>w->d->f|
|00003370| 69 6c 65 29 3b 0a 58 09 | 09 09 09 09 69 66 20 28 |ile);.X.|....if (|
|00003380| 68 2d 3e 77 2d 3e 64 2d | 3e 4d 58 64 61 74 61 29 |h->w->d-|>MXdata)|
|00003390| 20 7b 0a 58 09 09 09 09 | 09 09 28 76 6f 69 64 29 | {.X....|..(void)|
|000033a0| 20 66 70 75 74 73 28 68 | 2d 3e 77 2d 3e 64 2d 3e | fputs(h|->w->d->|
|000033b0| 4d 58 64 61 74 61 2c 0a | 58 09 09 09 09 09 09 09 |MXdata,.|X.......|
|000033c0| 68 2d 3e 77 2d 3e 64 2d | 3e 66 69 6c 65 29 3b 0a |h->w->d-|>file);.|
|000033d0| 58 09 09 09 09 09 7d 0a | 58 09 09 09 09 09 69 66 |X.....}.|X.....if|
|000033e0| 20 28 68 2d 3e 77 2d 3e | 64 2d 3e 6f 74 68 65 72 | (h->w->|d->other|
|000033f0| 29 20 7b 0a 58 09 09 09 | 09 09 09 28 76 6f 69 64 |) {.X...|...(void|
|00003400| 29 20 66 70 72 69 6e 74 | 66 28 68 2d 3e 77 2d 3e |) fprint|f(h->w->|
|00003410| 64 2d 3e 6f 74 68 65 72 | 2c 0a 58 09 09 09 09 09 |d->other|,.X.....|
|00003420| 09 09 22 25 2d 32 33 73 | 20 49 4e 5c 74 43 4e 41 |.."%-23s| IN\tCNA|
|00003430| 4d 45 5c 74 25 73 2e 25 | 73 2e 5c 6e 22 2c 0a 58 |ME\t%s.%|s.\n",.X|
|00003440| 09 09 09 09 09 09 09 68 | 2d 3e 6e 61 6d 65 2c 20 |.......h|->name, |
|00003450| 68 2d 3e 6e 61 6d 65 2c | 0a 58 09 09 09 09 09 09 |h->name,|.X......|
|00003460| 09 68 2d 3e 77 2d 3e 64 | 2d 3e 64 6f 6d 61 69 6e |.h->w->d|->domain|
|00003470| 6e 61 6d 65 29 3b 0a 58 | 09 09 09 09 09 7d 0a 58 |name);.X|.....}.X|
|00003480| 09 09 09 09 7d 0a 58 09 | 09 09 09 28 76 6f 69 64 |....}.X.|...(void|
|00003490| 29 20 66 70 72 69 6e 74 | 66 28 68 2d 3e 77 2d 3e |) fprint|f(h->w->|
|000034a0| 66 69 6c 65 2c 0a 58 09 | 09 09 09 09 64 6f 74 74 |file,.X.|....dott|
|000034b0| 65 64 20 3f 20 22 25 64 | 5c 74 49 4e 5c 74 50 54 |ed ? "%d|\tIN\tPT|
|000034c0| 52 5c 74 25 73 5c 6e 22 | 0a 58 09 09 09 09 09 09 |R\t%s\n"|.X......|
|000034d0| 3a 20 22 25 64 5c 74 49 | 4e 5c 74 50 54 52 5c 74 |: "%d\tI|N\tPTR\t|
|000034e0| 25 73 2e 25 73 2e 5c 6e | 22 2c 0a 58 09 09 09 09 |%s.%s.\n|",.X....|
|000034f0| 09 68 2d 3e 49 50 20 26 | 20 28 7e 68 2d 3e 77 2d |.h->IP &| (~h->w-|
|00003500| 3e 6e 65 74 6d 61 73 6b | 29 2c 0a 58 09 09 09 09 |>netmask|),.X....|
|00003510| 09 68 2d 3e 6e 61 6d 65 | 2c 20 68 2d 3e 77 2d 3e |.h->name|, h->w->|
|00003520| 64 2d 3e 64 6f 6d 61 69 | 6e 6e 61 6d 65 29 3b 0a |d->domai|nname);.|
|00003530| 58 09 09 09 7d 0a 58 09 | 09 7d 0a 58 09 09 65 6c |X...}.X.|.}.X..el|
|00003540| 73 65 20 7b 0a 58 09 09 | 09 69 66 20 28 6d 29 20 |se {.X..|.if (m) |
|00003550| 7b 0a 58 09 09 09 09 2f | 2a 20 43 61 73 65 20 34 |{.X..../|* Case 4|
|00003560| 20 2a 2f 0a 58 09 09 09 | 09 28 76 6f 69 64 29 20 | */.X...|.(void) |
|00003570| 66 70 72 69 6e 74 66 28 | 6d 2d 3e 77 2d 3e 64 2d |fprintf(|m->w->d-|
|00003580| 3e 66 69 6c 65 2c 0a 58 | 09 09 09 09 09 22 25 2d |>file,.X|....."%-|
|00003590| 32 33 73 20 49 4e 5c 74 | 41 5c 74 22 2c 20 68 2d |23s IN\t|A\t", h-|
|000035a0| 3e 6e 61 6d 65 29 3b 0a | 58 09 09 09 09 70 72 69 |>name);.|X....pri|
|000035b0| 6e 74 49 50 28 6d 2d 3e | 77 2d 3e 64 2d 3e 66 69 |ntIP(m->|w->d->fi|
|000035c0| 6c 65 2c 20 68 2d 3e 70 | 72 69 6d 61 72 79 2d 3e |le, h->p|rimary->|
|000035d0| 49 50 29 3b 0a 58 09 09 | 09 09 28 76 6f 69 64 29 |IP);.X..|..(void)|
|000035e0| 20 70 75 74 63 28 27 5c | 6e 27 2c 20 6d 2d 3e 77 | putc('\|n', m->w|
|000035f0| 2d 3e 64 2d 3e 66 69 6c | 65 29 3b 0a 58 09 09 09 |->d->fil|e);.X...|
|00003600| 09 69 66 20 28 6d 2d 3e | 77 2d 3e 64 2d 3e 4d 58 |.if (m->|w->d->MX|
|00003610| 64 61 74 61 29 20 7b 0a | 58 09 09 09 09 09 28 76 |data) {.|X.....(v|
|00003620| 6f 69 64 29 20 66 70 75 | 74 73 28 6d 2d 3e 77 2d |oid) fpu|ts(m->w-|
|00003630| 3e 64 2d 3e 4d 58 64 61 | 74 61 2c 0a 58 09 09 09 |>d->MXda|ta,.X...|
|00003640| 09 09 09 6d 2d 3e 77 2d | 3e 64 2d 3e 66 69 6c 65 |...m->w-|>d->file|
|00003650| 29 3b 0a 58 09 09 09 09 | 7d 0a 58 09 09 09 09 69 |);.X....|}.X....i|
|00003660| 66 20 28 6d 2d 3e 77 2d | 3e 64 2d 3e 6f 74 68 65 |f (m->w-|>d->othe|
|00003670| 72 29 20 7b 0a 58 09 09 | 09 09 09 28 76 6f 69 64 |r) {.X..|...(void|
|00003680| 29 20 66 70 72 69 6e 74 | 66 28 6d 2d 3e 77 2d 3e |) fprint|f(m->w->|
|00003690| 64 2d 3e 6f 74 68 65 72 | 2c 0a 58 09 09 09 09 09 |d->other|,.X.....|
|000036a0| 09 22 25 2d 32 33 73 20 | 49 4e 5c 74 43 4e 41 4d |."%-23s |IN\tCNAM|
|000036b0| 45 5c 74 25 73 2e 25 73 | 2e 5c 6e 22 2c 0a 58 09 |E\t%s.%s|.\n",.X.|
|000036c0| 09 09 09 09 09 68 2d 3e | 6e 61 6d 65 2c 20 6d 2d |.....h->|name, m-|
|000036d0| 3e 6e 61 6d 65 2c 0a 58 | 09 09 09 09 09 09 6d 2d |>name,.X|......m-|
|000036e0| 3e 77 2d 3e 64 2d 3e 64 | 6f 6d 61 69 6e 6e 61 6d |>w->d->d|omainnam|
|000036f0| 65 29 3b 0a 58 09 09 09 | 09 7d 0a 58 09 09 09 7d |e);.X...|.}.X...}|
|00003700| 0a 58 09 09 09 65 6c 73 | 65 20 7b 0a 58 09 09 09 |.X...els|e {.X...|
|00003710| 09 2f 2a 20 43 61 73 65 | 20 33 20 2a 2f 0a 58 09 |./* Case| 3 */.X.|
|00003720| 09 09 09 78 20 3d 20 66 | 69 6e 64 50 72 69 6e 63 |...x = f|indPrinc|
|00003730| 69 70 61 6c 28 68 2d 3e | 70 72 69 6d 61 72 79 29 |ipal(h->|primary)|
|00003740| 3b 0a 58 09 09 09 09 69 | 66 20 28 21 78 29 20 78 |;.X....i|f (!x) x|
|00003750| 20 3d 20 68 2d 3e 70 72 | 69 6d 61 72 79 3b 0a 58 | = h->pr|imary;.X|
|00003760| 09 09 09 09 28 76 6f 69 | 64 29 20 66 70 72 69 6e |....(voi|d) fprin|
|00003770| 74 66 28 78 2d 3e 77 2d | 3e 64 2d 3e 66 69 6c 65 |tf(x->w-|>d->file|
|00003780| 2c 0a 58 09 09 09 09 09 | 22 25 2d 32 33 73 20 49 |,.X.....|"%-23s I|
|00003790| 4e 5c 74 43 4e 41 4d 45 | 5c 74 25 73 2e 25 73 2e |N\tCNAME|\t%s.%s.|
|000037a0| 5c 6e 22 2c 0a 58 09 09 | 09 09 09 68 2d 3e 6e 61 |\n",.X..|...h->na|
|000037b0| 6d 65 2c 20 78 2d 3e 6e | 61 6d 65 2c 0a 58 09 09 |me, x->n|ame,.X..|
|000037c0| 09 09 09 78 2d 3e 77 2d | 3e 64 2d 3e 64 6f 6d 61 |...x->w-|>d->doma|
|000037d0| 69 6e 6e 61 6d 65 29 3b | 0a 58 09 09 09 09 69 66 |inname);|.X....if|
|000037e0| 20 28 78 2d 3e 77 2d 3e | 64 2d 3e 6f 74 68 65 72 | (x->w->|d->other|
|000037f0| 29 20 7b 0a 58 09 09 09 | 09 09 28 76 6f 69 64 29 |) {.X...|..(void)|
|00003800| 20 66 70 72 69 6e 74 66 | 28 78 2d 3e 77 2d 3e 64 | fprintf|(x->w->d|
|00003810| 2d 3e 6f 74 68 65 72 2c | 0a 58 09 09 09 09 09 09 |->other,|.X......|
|00003820| 22 25 2d 32 33 73 20 49 | 4e 5c 74 43 4e 41 4d 45 |"%-23s I|N\tCNAME|
|00003830| 5c 74 25 73 2e 25 73 2e | 5c 6e 22 2c 0a 58 09 09 |\t%s.%s.|\n",.X..|
|00003840| 09 09 09 09 68 2d 3e 6e | 61 6d 65 2c 20 78 2d 3e |....h->n|ame, x->|
|00003850| 6e 61 6d 65 2c 0a 58 09 | 09 09 09 09 09 78 2d 3e |name,.X.|.....x->|
|00003860| 77 2d 3e 64 2d 3e 64 6f | 6d 61 69 6e 6e 61 6d 65 |w->d->do|mainname|
|00003870| 29 3b 0a 58 09 09 09 09 | 7d 0a 58 09 09 09 7d 0a |);.X....|}.X...}.|
|00003880| 58 09 09 7d 0a 58 09 09 | 68 20 3d 20 68 2d 3e 66 |X..}.X..|h = h->f|
|00003890| 6f 72 77 61 72 64 3b 0a | 58 09 7d 0a 58 7d 0a 58 |orward;.|X.}.X}.X|
|000038a0| 0a 58 73 74 61 74 69 63 | 20 76 6f 69 64 20 72 65 |.Xstatic| void re|
|000038b0| 61 64 63 6f 6e 66 69 67 | 28 29 0a 58 7b 09 46 49 |adconfig|().X{.FI|
|000038c0| 4c 45 20 2a 63 6f 6e 66 | 69 67 3b 0a 58 09 6c 6f |LE *conf|ig;.X.lo|
|000038d0| 6e 67 20 49 50 3b 0a 58 | 09 63 68 61 72 20 2a 63 |ng IP;.X|.char *c|
|000038e0| 68 3b 0a 58 09 63 68 61 | 72 20 62 75 66 66 65 72 |h;.X.cha|r buffer|
|000038f0| 5b 4c 49 4e 45 42 55 46 | 46 45 52 5d 3b 0a 58 09 |[LINEBUF|FER];.X.|
|00003900| 77 69 72 65 20 2a 77 3b | 0a 58 09 64 6f 6d 61 69 |wire *w;|.X.domai|
|00003910| 6e 20 2a 64 3b 0a 58 0a | 58 09 69 66 20 28 28 63 |n *d;.X.|X.if ((c|
|00003920| 6f 6e 66 69 67 20 3d 20 | 66 6f 70 65 6e 28 43 4f |onfig = |fopen(CO|
|00003930| 4e 46 49 47 2c 20 22 72 | 22 29 29 20 3d 3d 20 4e |NFIG, "r|")) == N|
|00003940| 55 4c 4c 29 20 7b 0a 58 | 09 09 28 76 6f 69 64 29 |ULL) {.X|..(void)|
|00003950| 20 66 70 72 69 6e 74 66 | 28 73 74 64 65 72 72 2c | fprintf|(stderr,|
|00003960| 20 22 46 61 69 6c 65 64 | 20 74 6f 20 6f 70 65 6e | "Failed| to open|
|00003970| 20 25 73 5c 6e 22 2c 20 | 43 4f 4e 46 49 47 29 3b | %s\n", |CONFIG);|
|00003980| 0a 58 09 09 65 78 69 74 | 28 31 29 3b 0a 58 09 7d |.X..exit|(1);.X.}|
|00003990| 0a 58 09 66 6f 72 20 28 | 3b 3b 29 20 7b 0a 58 09 |.X.for (|;;) {.X.|
|000039a0| 09 69 66 20 28 28 63 68 | 20 3d 20 66 67 65 74 73 |.if ((ch| = fgets|
|000039b0| 28 62 75 66 66 65 72 2c | 20 4c 49 4e 45 42 55 46 |(buffer,| LINEBUF|
|000039c0| 46 45 52 2c 20 63 6f 6e | 66 69 67 29 29 20 3d 3d |FER, con|fig)) ==|
|000039d0| 20 4e 55 4c 4c 29 20 62 | 72 65 61 6b 3b 0a 58 09 | NULL) b|reak;.X.|
|000039e0| 09 77 68 69 6c 65 20 28 | 69 73 73 70 61 63 65 28 |.while (|isspace(|
|000039f0| 2a 63 68 29 29 20 63 68 | 2b 2b 3b 0a 58 09 09 69 |*ch)) ch|++;.X..i|
|00003a00| 66 20 28 2a 63 68 20 3d | 3d 20 27 5c 30 27 20 7c |f (*ch =|= '\0' ||
|00003a10| 7c 20 2a 63 68 20 3d 3d | 20 27 23 27 29 20 63 6f || *ch ==| '#') co|
|00003a20| 6e 74 69 6e 75 65 3b 0a | 58 09 09 49 50 20 3d 20 |ntinue;.|X..IP = |
|00003a30| 49 50 63 6f 6e 76 65 72 | 74 28 26 63 68 29 3b 0a |IPconver|t(&ch);.|
|00003a40| 58 09 09 69 66 20 28 49 | 50 29 20 7b 0a 58 09 09 |X..if (I|P) {.X..|
|00003a50| 09 2f 2a 20 57 69 72 65 | 20 72 65 63 6f 72 64 20 |./* Wire| record |
|00003a60| 2a 2f 0a 58 09 09 09 77 | 20 3d 20 77 69 72 65 54 |*/.X...w| = wireT|
|00003a70| 61 62 6c 65 20 2b 20 77 | 69 72 65 73 2b 2b 3b 0a |able + w|ires++;.|
|00003a80| 58 09 09 09 77 2d 3e 6e | 75 6d 62 65 72 20 3d 20 |X...w->n|umber = |
|00003a90| 49 50 3b 0a 58 09 09 09 | 77 2d 3e 6e 65 74 6d 61 |IP;.X...|w->netma|
|00003aa0| 73 6b 20 3d 20 49 50 63 | 6f 6e 76 65 72 74 28 26 |sk = IPc|onvert(&|
|00003ab0| 63 68 29 3b 0a 58 09 09 | 09 77 2d 3e 52 52 66 69 |ch);.X..|.w->RRfi|
|00003ac0| 6c 65 20 3d 20 65 78 74 | 72 61 63 74 6e 61 6d 65 |le = ext|ractname|
|00003ad0| 28 26 63 68 29 3b 0a 58 | 09 09 09 77 2d 3e 68 65 |(&ch);.X|...w->he|
|00003ae0| 61 64 65 72 66 69 6c 65 | 20 3d 20 65 78 74 72 61 |aderfile| = extra|
|00003af0| 63 74 6e 61 6d 65 28 26 | 63 68 29 3b 0a 58 09 09 |ctname(&|ch);.X..|
|00003b00| 09 77 2d 3e 64 6f 6d 61 | 69 6e 6e 61 6d 65 20 3d |.w->doma|inname =|
|00003b10| 20 65 78 74 72 61 63 74 | 6e 61 6d 65 28 26 63 68 | extract|name(&ch|
|00003b20| 29 3b 0a 58 09 09 09 77 | 2d 3e 66 69 6c 65 20 3d |);.X...w|->file =|
|00003b30| 20 73 74 64 65 72 72 3b | 20 20 2f 2a 20 6d 65 61 | stderr;| /* mea|
|00003b40| 6e 74 69 6d 65 20 2a 2f | 0a 58 09 09 09 77 2d 3e |ntime */|.X...w->|
|00003b50| 64 20 3d 20 66 69 6e 64 | 44 6f 6d 61 69 6e 28 77 |d = find|Domain(w|
|00003b60| 2d 3e 64 6f 6d 61 69 6e | 6e 61 6d 65 29 3b 0a 58 |->domain|name);.X|
|00003b70| 09 09 09 69 66 20 28 21 | 77 2d 3e 64 29 20 7b 0a |...if (!|w->d) {.|
|00003b80| 58 09 09 09 09 28 76 6f | 69 64 29 20 66 70 72 69 |X....(vo|id) fpri|
|00003b90| 6e 74 66 28 73 74 64 65 | 72 72 2c 20 22 55 6e 64 |ntf(stde|rr, "Und|
|00003ba0| 65 66 69 6e 65 64 20 64 | 6f 6d 61 69 6e 20 25 73 |efined d|omain %s|
|00003bb0| 3a 5c 6e 22 2c 0a 58 09 | 09 09 09 09 77 2d 3e 64 |:\n",.X.|....w->d|
|00003bc0| 6f 6d 61 69 6e 6e 61 6d | 65 29 3b 0a 58 09 09 09 |omainnam|e);.X...|
|00003bd0| 09 28 76 6f 69 64 29 20 | 66 70 75 74 73 28 62 75 |.(void) |fputs(bu|
|00003be0| 66 66 65 72 2c 20 73 74 | 64 65 72 72 29 3b 0a 58 |ffer, st|derr);.X|
|00003bf0| 09 09 09 09 28 76 6f 69 | 64 29 20 66 70 75 74 63 |....(voi|d) fputc|
|00003c00| 28 27 5c 6e 27 2c 20 73 | 74 64 65 72 72 29 3b 0a |('\n', s|tderr);.|
|00003c10| 58 09 09 09 09 65 78 69 | 74 28 32 29 3b 0a 58 09 |X....exi|t(2);.X.|
|00003c20| 09 09 7d 0a 58 09 09 7d | 0a 58 09 09 65 6c 73 65 |..}.X..}|.X..else|
|00003c30| 20 7b 0a 58 09 09 09 2f | 2a 20 44 6f 6d 61 69 6e | {.X.../|* Domain|
|00003c40| 20 72 65 63 6f 72 64 20 | 2a 2f 0a 58 09 09 09 64 | record |*/.X...d|
|00003c50| 20 3d 20 64 6f 6d 61 69 | 6e 54 61 62 6c 65 20 2b | = domai|nTable +|
|00003c60| 20 64 6f 6d 61 69 6e 73 | 2b 2b 3b 0a 58 09 09 09 | domains|++;.X...|
|00003c70| 64 2d 3e 64 6f 6d 61 69 | 6e 6e 61 6d 65 20 3d 20 |d->domai|nname = |
|00003c80| 65 78 74 72 61 63 74 6e | 61 6d 65 28 26 63 68 29 |extractn|ame(&ch)|
|00003c90| 3b 0a 58 09 09 09 64 2d | 3e 52 52 66 69 6c 65 20 |;.X...d-|>RRfile |
|00003ca0| 3d 20 65 78 74 72 61 63 | 74 6e 61 6d 65 28 26 63 |= extrac|tname(&c|
|00003cb0| 68 29 3b 0a 58 09 09 09 | 64 2d 3e 68 65 61 64 65 |h);.X...|d->heade|
|00003cc0| 72 66 69 6c 65 20 3d 20 | 65 78 74 72 61 63 74 6e |rfile = |extractn|
|00003cd0| 61 6d 65 28 26 63 68 29 | 3b 0a 58 09 09 09 64 2d |ame(&ch)|;.X...d-|
|00003ce0| 3e 6f 74 68 65 72 5a 6f | 6e 65 66 69 6c 65 20 3d |>otherZo|nefile =|
|00003cf0| 20 65 78 74 72 61 63 74 | 6e 61 6d 65 28 26 63 68 | extract|name(&ch|
|00003d00| 29 3b 0a 58 09 09 09 64 | 2d 3e 4d 58 66 69 6c 65 |);.X...d|->MXfile|
|00003d10| 20 3d 20 65 78 74 72 61 | 63 74 6e 61 6d 65 28 26 | = extra|ctname(&|
|00003d20| 63 68 29 3b 0a 58 09 09 | 09 64 2d 3e 66 69 6c 65 |ch);.X..|.d->file|
|00003d30| 20 3d 20 73 74 64 65 72 | 72 3b 20 20 2f 2a 20 6d | = stder|r; /* m|
|00003d40| 65 61 6e 74 69 6d 65 20 | 2a 2f 0a 58 09 09 09 64 |eantime |*/.X...d|
|00003d50| 2d 3e 6f 74 68 65 72 20 | 3d 20 4e 55 4c 4c 3b 0a |->other |= NULL;.|
|00003d60| 58 09 09 09 64 2d 3e 4d | 58 64 61 74 61 20 3d 20 |X...d->M|Xdata = |
|00003d70| 4e 55 4c 4c 3b 0a 58 09 | 09 7d 0a 58 09 7d 0a 58 |NULL;.X.|.}.X.}.X|
|00003d80| 09 28 76 6f 69 64 29 20 | 66 63 6c 6f 73 65 28 63 |.(void) |fclose(c|
|00003d90| 6f 6e 66 69 67 29 3b 0a | 58 7d 0a 58 0a 58 73 74 |onfig);.|X}.X.Xst|
|00003da0| 61 74 69 63 20 76 6f 69 | 64 20 77 72 69 74 65 68 |atic voi|d writeh|
|00003db0| 65 61 64 65 72 28 66 2c | 20 68 2c 20 4d 58 64 61 |eader(f,| h, MXda|
|00003dc0| 74 61 29 0a 58 46 49 4c | 45 20 2a 66 3b 0a 58 63 |ta).XFIL|E *f;.Xc|
|00003dd0| 68 61 72 20 2a 68 3b 0a | 58 63 68 61 72 20 2a 4d |har *h;.|Xchar *M|
|00003de0| 58 64 61 74 61 3b 0a 58 | 7b 09 73 74 61 74 69 63 |Xdata;.X|{.static|
|00003df0| 20 73 74 72 75 63 74 20 | 70 61 73 73 77 64 20 2a | struct |passwd *|
|00003e00| 70 77 64 3b 0a 58 09 74 | 69 6d 65 5f 74 20 74 74 |pwd;.X.t|ime_t tt|
|00003e10| 3b 0a 58 09 73 74 61 74 | 69 63 20 73 74 72 75 63 |;.X.stat|ic struc|
|00003e20| 74 20 74 6d 20 2a 74 74 | 6d 3b 0a 58 09 73 74 61 |t tm *tt|m;.X.sta|
|00003e30| 74 69 63 20 63 68 61 72 | 20 2a 74 3b 0a 58 09 73 |tic char| *t;.X.s|
|00003e40| 74 61 74 69 63 20 63 68 | 61 72 20 73 74 61 6d 70 |tatic ch|ar stamp|
|00003e50| 5b 32 30 5d 3b 0a 58 09 | 46 49 4c 45 20 2a 68 66 |[20];.X.|FILE *hf|
|00003e60| 2c 20 2a 6c 3b 0a 58 09 | 63 68 61 72 20 62 75 66 |, *l;.X.|char buf|
|00003e70| 66 65 72 5b 4c 49 4e 45 | 42 55 46 46 45 52 5d 3b |fer[LINE|BUFFER];|
|00003e80| 0a 58 0a 58 09 69 66 20 | 28 21 70 77 64 29 20 7b |.X.X.if |(!pwd) {|
|00003e90| 0a 58 09 09 70 77 64 20 | 3d 20 67 65 74 70 77 75 |.X..pwd |= getpwu|
|00003ea0| 69 64 28 67 65 74 75 69 | 64 28 29 29 3b 0a 58 09 |id(getui|d());.X.|
|00003eb0| 09 65 6e 64 70 77 65 6e | 74 28 29 3b 0a 58 09 09 |.endpwen|t();.X..|
|00003ec0| 74 74 20 3d 20 74 69 6d | 65 28 4e 55 4c 4c 29 3b |tt = tim|e(NULL);|
|00003ed0| 0a 58 09 09 74 74 6d 20 | 3d 20 6c 6f 63 61 6c 74 |.X..ttm |= localt|
|00003ee0| 69 6d 65 28 26 74 74 29 | 3b 0a 58 09 09 28 76 6f |ime(&tt)|;.X..(vo|
|00003ef0| 69 64 29 20 73 70 72 69 | 6e 74 66 28 73 74 61 6d |id) spri|ntf(stam|
|00003f00| 70 2c 20 22 25 64 25 33 | 2e 33 64 25 33 2e 33 64 |p, "%d%3|.3d%3.3d|
|00003f10| 22 2c 0a 58 09 09 09 74 | 74 6d 2d 3e 74 6d 5f 79 |",.X...t|tm->tm_y|
|00003f20| 65 61 72 2c 20 74 74 6d | 2d 3e 74 6d 5f 79 64 61 |ear, ttm|->tm_yda|
|00003f30| 79 2c 0a 58 09 09 09 28 | 28 36 30 20 2a 20 74 74 |y,.X...(|(60 * tt|
|00003f40| 6d 2d 3e 74 6d 5f 68 6f | 75 72 29 20 2b 20 74 74 |m->tm_ho|ur) + tt|
|00003f50| 6d 2d 3e 74 6d 5f 6d 69 | 6e 29 20 3e 3e 20 31 29 |m->tm_mi|n) >> 1)|
|00003f60| 3b 0a 58 09 09 74 20 3d | 20 61 73 63 74 69 6d 65 |;.X..t =| asctime|
|00003f70| 28 74 74 6d 29 3b 0a 58 | 09 09 69 66 20 28 6c 20 |(ttm);.X|..if (l |
|00003f80| 3d 20 66 6f 70 65 6e 28 | 4c 4f 47 2c 20 22 61 22 |= fopen(|LOG, "a"|
|00003f90| 29 29 20 7b 0a 58 09 09 | 09 66 70 72 69 6e 74 66 |)) {.X..|.fprintf|
|00003fa0| 28 6c 2c 20 22 47 65 6e | 65 72 61 74 65 64 20 62 |(l, "Gen|erated b|
|00003fb0| 79 20 25 73 20 6f 6e 20 | 25 73 22 2c 20 70 77 64 |y %s on |%s", pwd|
|00003fc0| 2d 3e 70 77 5f 6e 61 6d | 65 2c 20 74 29 3b 0a 58 |->pw_nam|e, t);.X|
|00003fd0| 09 09 09 66 63 6c 6f 73 | 65 28 6c 29 3b 0a 58 09 |...fclos|e(l);.X.|
|00003fe0| 09 7d 0a 58 09 7d 0a 58 | 09 28 76 6f 69 64 29 20 |.}.X.}.X|.(void) |
|00003ff0| 66 70 72 69 6e 74 66 28 | 66 2c 20 22 3b 3b 20 47 |fprintf(|f, ";; G|
|00004000| 65 6e 65 72 61 74 65 64 | 20 62 79 20 25 73 20 6f |enerated| by %s o|
|00004010| 6e 20 25 73 5c 6e 22 2c | 20 70 77 64 2d 3e 70 77 |n %s\n",| pwd->pw|
|00004020| 5f 6e 61 6d 65 2c 20 74 | 29 3b 0a 58 09 69 66 20 |_name, t|);.X.if |
|00004030| 28 28 68 66 20 3d 20 66 | 6f 70 65 6e 28 68 2c 20 |((hf = f|open(h, |
|00004040| 22 72 22 29 29 20 3d 3d | 20 4e 55 4c 4c 29 20 7b |"r")) ==| NULL) {|
|00004050| 0a 58 09 09 28 76 6f 69 | 64 29 20 66 70 72 69 6e |.X..(voi|d) fprin|
|00004060| 74 66 28 73 74 64 65 72 | 72 2c 20 22 43 61 6e 27 |tf(stder|r, "Can'|
|00004070| 74 20 6f 70 65 6e 20 68 | 65 61 64 65 72 20 66 69 |t open h|eader fi|
|00004080| 6c 65 20 25 73 5c 6e 22 | 2c 20 68 29 3b 0a 58 09 |le %s\n"|, h);.X.|
|00004090| 09 65 78 69 74 28 34 29 | 3b 0a 58 09 7d 0a 58 09 |.exit(4)|;.X.}.X.|
|000040a0| 28 76 6f 69 64 29 20 66 | 70 72 69 6e 74 66 28 66 |(void) f|printf(f|
|000040b0| 2c 20 22 3b 3b 20 49 6e | 63 6c 75 64 69 6e 67 20 |, ";; In|cluding |
|000040c0| 25 73 5c 6e 22 2c 20 68 | 29 3b 0a 58 09 66 6f 72 |%s\n", h|);.X.for|
|000040d0| 20 28 3b 3b 29 20 7b 0a | 58 09 09 69 66 20 28 66 | (;;) {.|X..if (f|
|000040e0| 67 65 74 73 28 62 75 66 | 66 65 72 2c 20 4c 49 4e |gets(buf|fer, LIN|
|000040f0| 45 42 55 46 46 45 52 2c | 20 68 66 29 20 3d 3d 20 |EBUFFER,| hf) == |
|00004100| 4e 55 4c 4c 29 20 62 72 | 65 61 6b 3b 0a 58 09 09 |NULL) br|eak;.X..|
|00004110| 28 76 6f 69 64 29 20 66 | 70 72 69 6e 74 66 28 66 |(void) f|printf(f|
|00004120| 2c 20 62 75 66 66 65 72 | 2c 20 73 74 61 6d 70 29 |, buffer|, stamp)|
|00004130| 3b 0a 58 09 7d 0a 58 09 | 28 76 6f 69 64 29 20 66 |;.X.}.X.|(void) f|
|00004140| 63 6c 6f 73 65 28 68 66 | 29 3b 0a 58 09 28 76 6f |close(hf|);.X.(vo|
|00004150| 69 64 29 20 66 70 72 69 | 6e 74 66 28 66 2c 20 22 |id) fpri|ntf(f, "|
|00004160| 3b 3b 20 45 6e 64 20 6f | 66 20 25 73 5c 6e 5c 6e |;; End o|f %s\n\n|
|00004170| 22 2c 20 68 29 3b 0a 58 | 09 69 66 20 28 4d 58 64 |", h);.X|.if (MXd|
|00004180| 61 74 61 29 20 7b 0a 58 | 09 09 28 76 6f 69 64 29 |ata) {.X|..(void)|
|00004190| 20 66 70 75 74 63 28 27 | 40 27 2c 20 66 29 3b 0a | fputc('|@', f);.|
|000041a0| 58 09 09 28 76 6f 69 64 | 29 20 66 70 75 74 73 28 |X..(void|) fputs(|
|000041b0| 4d 58 64 61 74 61 2c 20 | 66 29 3b 0a 58 09 09 28 |MXdata, |f);.X..(|
|000041c0| 76 6f 69 64 29 20 66 70 | 75 74 63 28 27 5c 6e 27 |void) fp|utc('\n'|
|000041d0| 2c 20 66 29 3b 0a 58 09 | 7d 0a 58 7d 0a 58 0a 58 |, f);.X.|}.X}.X.X|
|000041e0| 73 74 61 74 69 63 20 76 | 6f 69 64 20 6f 70 65 6e |static v|oid open|
|000041f0| 66 69 6c 65 73 28 29 0a | 58 7b 09 69 6e 74 20 69 |files().|X{.int i|
|00004200| 3b 0a 58 09 69 6e 74 20 | 4d 58 66 64 3b 0a 58 09 |;.X.int |MXfd;.X.|
|00004210| 69 6e 74 20 4d 58 73 69 | 7a 65 3b 0a 58 09 77 69 |int MXsi|ze;.X.wi|
|00004220| 72 65 20 2a 77 3b 0a 58 | 09 64 6f 6d 61 69 6e 20 |re *w;.X|.domain |
|00004230| 2a 64 3b 0a 58 0a 58 09 | 66 6f 72 20 28 69 20 3d |*d;.X.X.|for (i =|
|00004240| 20 30 2c 20 64 20 3d 20 | 64 6f 6d 61 69 6e 54 61 | 0, d = |domainTa|
|00004250| 62 6c 65 3b 20 69 20 3c | 20 64 6f 6d 61 69 6e 73 |ble; i <| domains|
|00004260| 3b 20 69 2b 2b 2c 20 64 | 2b 2b 29 20 7b 0a 58 09 |; i++, d|++) {.X.|
|00004270| 09 69 66 20 28 28 64 2d | 3e 66 69 6c 65 20 3d 20 |.if ((d-|>file = |
|00004280| 66 6f 70 65 6e 28 64 2d | 3e 52 52 66 69 6c 65 2c |fopen(d-|>RRfile,|
|00004290| 20 22 77 22 29 29 20 3d | 3d 20 4e 55 4c 4c 29 20 | "w")) =|= NULL) |
|000042a0| 7b 0a 58 09 09 09 28 76 | 6f 69 64 29 20 66 70 72 |{.X...(v|oid) fpr|
|000042b0| 69 6e 74 66 28 73 74 64 | 65 72 72 2c 20 22 43 61 |intf(std|err, "Ca|
|000042c0| 6e 27 74 20 6f 70 65 6e | 20 25 73 5c 6e 22 2c 20 |n't open| %s\n", |
|000042d0| 64 2d 3e 52 52 66 69 6c | 65 29 3b 0a 58 09 09 09 |d->RRfil|e);.X...|
|000042e0| 65 78 69 74 28 33 29 3b | 0a 58 09 09 7d 0a 58 09 |exit(3);|.X..}.X.|
|000042f0| 09 69 66 20 28 64 2d 3e | 6f 74 68 65 72 5a 6f 6e |.if (d->|otherZon|
|00004300| 65 66 69 6c 65 29 20 7b | 0a 58 09 09 09 69 66 20 |efile) {|.X...if |
|00004310| 28 28 64 2d 3e 6f 74 68 | 65 72 20 3d 20 66 6f 70 |((d->oth|er = fop|
|00004320| 65 6e 28 64 2d 3e 6f 74 | 68 65 72 5a 6f 6e 65 66 |en(d->ot|herZonef|
|00004330| 69 6c 65 2c 20 22 77 22 | 29 29 20 3d 3d 20 4e 55 |ile, "w"|)) == NU|
|00004340| 4c 4c 29 20 7b 0a 58 09 | 09 09 09 28 76 6f 69 64 |LL) {.X.|...(void|
|00004350| 29 20 66 70 72 69 6e 74 | 66 28 73 74 64 65 72 72 |) fprint|f(stderr|
|00004360| 2c 20 22 43 61 6e 27 74 | 20 6f 70 65 6e 20 25 73 |, "Can't| open %s|
|00004370| 5c 6e 22 2c 0a 58 09 09 | 09 09 09 09 64 2d 3e 6f |\n",.X..|....d->o|
|00004380| 74 68 65 72 5a 6f 6e 65 | 66 69 6c 65 29 3b 0a 58 |therZone|file);.X|
|00004390| 09 09 09 09 65 78 69 74 | 28 33 29 3b 0a 58 09 09 |....exit|(3);.X..|
|000043a0| 09 7d 0a 58 09 09 7d 0a | 58 09 09 69 66 20 28 64 |.}.X..}.|X..if (d|
|000043b0| 2d 3e 4d 58 66 69 6c 65 | 29 20 7b 0a 58 09 09 09 |->MXfile|) {.X...|
|000043c0| 69 66 20 28 28 4d 58 66 | 64 20 3d 20 6f 70 65 6e |if ((MXf|d = open|
|000043d0| 28 64 2d 3e 4d 58 66 69 | 6c 65 2c 20 4f 5f 52 44 |(d->MXfi|le, O_RD|
|000043e0| 4f 4e 4c 59 2c 20 30 29 | 29 20 3c 20 30 29 20 7b |ONLY, 0)|) < 0) {|
|000043f0| 0a 58 09 09 09 09 28 76 | 6f 69 64 29 20 66 70 72 |.X....(v|oid) fpr|
|00004400| 69 6e 74 66 28 73 74 64 | 65 72 72 2c 20 22 43 61 |intf(std|err, "Ca|
|00004410| 6e 27 74 20 6f 70 65 6e | 20 25 73 5c 6e 22 2c 0a |n't open| %s\n",.|
|00004420| 58 09 09 09 09 09 09 64 | 2d 3e 4d 58 66 69 6c 65 |X......d|->MXfile|
|00004430| 29 3b 0a 58 09 09 09 09 | 65 78 69 74 28 33 29 3b |);.X....|exit(3);|
|00004440| 0a 58 09 09 09 7d 0a 58 | 09 09 09 64 2d 3e 4d 58 |.X...}.X|...d->MX|
|00004450| 64 61 74 61 20 3d 20 28 | 63 68 61 72 20 2a 29 20 |data = (|char *) |
|00004460| 6d 61 6c 6c 6f 63 28 32 | 30 34 38 29 3b 0a 58 09 |malloc(2|048);.X.|
|00004470| 09 09 69 66 20 28 28 4d | 58 73 69 7a 65 20 3d 20 |..if ((M|Xsize = |
|00004480| 72 65 61 64 28 4d 58 66 | 64 2c 20 64 2d 3e 4d 58 |read(MXf|d, d->MX|
|00004490| 64 61 74 61 2c 20 32 30 | 34 38 29 29 20 3c 20 30 |data, 20|48)) < 0|
|000044a0| 29 20 7b 0a 58 09 09 09 | 09 28 76 6f 69 64 29 20 |) {.X...|.(void) |
|000044b0| 66 70 72 69 6e 74 66 28 | 73 74 64 65 72 72 2c 0a |fprintf(|stderr,.|
|000044c0| 58 09 09 09 09 09 09 22 | 43 6f 75 6c 64 6e 27 74 |X......"|Couldn't|
|000044d0| 20 72 65 61 64 20 66 72 | 6f 6d 20 25 73 5c 6e 22 | read fr|om %s\n"|
|000044e0| 2c 0a 58 09 09 09 09 09 | 09 64 2d 3e 4d 58 66 69 |,.X.....|.d->MXfi|
|000044f0| 6c 65 29 3b 0a 58 09 09 | 09 09 65 78 69 74 28 33 |le);.X..|..exit(3|
|00004500| 29 3b 0a 58 09 09 09 7d | 0a 58 09 09 09 28 76 6f |);.X...}|.X...(vo|
|00004510| 69 64 29 20 63 6c 6f 73 | 65 28 4d 58 66 64 29 3b |id) clos|e(MXfd);|
|00004520| 0a 58 09 09 09 2a 28 64 | 2d 3e 4d 58 64 61 74 61 |.X...*(d|->MXdata|
|00004530| 20 2b 20 4d 58 73 69 7a | 65 29 20 3d 20 27 5c 30 | + MXsiz|e) = '\0|
|00004540| 27 3b 0a 58 09 09 7d 0a | 58 09 09 77 72 69 74 65 |';.X..}.|X..write|
|00004550| 68 65 61 64 65 72 28 64 | 2d 3e 66 69 6c 65 2c 20 |header(d|->file, |
|00004560| 64 2d 3e 68 65 61 64 65 | 72 66 69 6c 65 2c 20 64 |d->heade|rfile, d|
|00004570| 2d 3e 4d 58 64 61 74 61 | 29 3b 0a 58 09 09 69 66 |->MXdata|);.X..if|
|00004580| 20 28 64 2d 3e 6f 74 68 | 65 72 5a 6f 6e 65 66 69 | (d->oth|erZonefi|
|00004590| 6c 65 29 0a 58 09 09 09 | 77 72 69 74 65 68 65 61 |le).X...|writehea|
|000045a0| 64 65 72 28 64 2d 3e 6f | 74 68 65 72 2c 20 64 2d |der(d->o|ther, d-|
|000045b0| 3e 68 65 61 64 65 72 66 | 69 6c 65 2c 20 64 2d 3e |>headerf|ile, d->|
|000045c0| 4d 58 64 61 74 61 29 3b | 0a 58 09 7d 0a 58 09 66 |MXdata);|.X.}.X.f|
|000045d0| 6f 72 20 28 69 20 3d 20 | 30 2c 20 77 20 3d 20 77 |or (i = |0, w = w|
|000045e0| 69 72 65 54 61 62 6c 65 | 3b 20 69 20 3c 20 77 69 |ireTable|; i < wi|
|000045f0| 72 65 73 3b 20 69 2b 2b | 2c 20 77 2b 2b 29 20 7b |res; i++|, w++) {|
|00004600| 0a 58 09 09 69 66 20 28 | 28 77 2d 3e 66 69 6c 65 |.X..if (|(w->file|
|00004610| 20 3d 20 66 6f 70 65 6e | 28 77 2d 3e 52 52 66 69 | = fopen|(w->RRfi|
|00004620| 6c 65 2c 20 22 77 22 29 | 29 20 3d 3d 20 4e 55 4c |le, "w")|) == NUL|
|00004630| 4c 29 20 7b 0a 58 09 09 | 09 65 78 69 74 28 33 29 |L) {.X..|.exit(3)|
|00004640| 3b 0a 58 09 09 7d 0a 58 | 09 09 77 72 69 74 65 68 |;.X..}.X|..writeh|
|00004650| 65 61 64 65 72 28 77 2d | 3e 66 69 6c 65 2c 20 77 |eader(w-|>file, w|
|00004660| 2d 3e 68 65 61 64 65 72 | 66 69 6c 65 2c 20 28 63 |->header|file, (c|
|00004670| 68 61 72 20 2a 29 20 30 | 29 3b 0a 58 09 7d 0a 58 |har *) 0|);.X.}.X|
|00004680| 7d 0a 58 0a 58 73 74 61 | 74 69 63 20 76 6f 69 64 |}.X.Xsta|tic void|
|00004690| 20 63 6c 6f 73 65 66 69 | 6c 65 73 28 29 0a 58 7b | closefi|les().X{|
|000046a0| 09 69 6e 74 20 69 3b 0a | 58 09 64 6f 6d 61 69 6e |.int i;.|X.domain|
|000046b0| 20 2a 64 3b 0a 58 09 77 | 69 72 65 20 2a 77 3b 0a | *d;.X.w|ire *w;.|
|000046c0| 58 0a 58 09 66 6f 72 20 | 28 69 20 3d 20 30 2c 20 |X.X.for |(i = 0, |
|000046d0| 64 20 3d 20 64 6f 6d 61 | 69 6e 54 61 62 6c 65 3b |d = doma|inTable;|
|000046e0| 20 69 20 3c 20 64 6f 6d | 61 69 6e 73 3b 20 69 2b | i < dom|ains; i+|
|000046f0| 2b 2c 20 64 2b 2b 29 20 | 7b 0a 58 09 09 28 76 6f |+, d++) |{.X..(vo|
|00004700| 69 64 29 20 66 63 6c 6f | 73 65 28 64 2d 3e 66 69 |id) fclo|se(d->fi|
|00004710| 6c 65 29 3b 0a 58 09 09 | 69 66 20 28 64 2d 3e 6f |le);.X..|if (d->o|
|00004720| 74 68 65 72 29 20 28 76 | 6f 69 64 29 20 66 63 6c |ther) (v|oid) fcl|
|00004730| 6f 73 65 28 64 2d 3e 6f | 74 68 65 72 29 3b 0a 58 |ose(d->o|ther);.X|
|00004740| 09 7d 0a 58 09 66 6f 72 | 20 28 69 20 3d 20 30 2c |.}.X.for| (i = 0,|
|00004750| 20 77 20 3d 20 77 69 72 | 65 54 61 62 6c 65 3b 20 | w = wir|eTable; |
|00004760| 69 20 3c 20 77 69 72 65 | 73 3b 20 69 2b 2b 2c 20 |i < wire|s; i++, |
|00004770| 77 2b 2b 29 20 7b 0a 58 | 09 09 28 76 6f 69 64 29 |w++) {.X|..(void)|
|00004780| 20 66 63 6c 6f 73 65 28 | 77 2d 3e 66 69 6c 65 29 | fclose(|w->file)|
|00004790| 3b 0a 58 09 7d 0a 58 7d | 0a 45 4e 44 5f 4f 46 5f |;.X.}.X}|.END_OF_|
|000047a0| 6d 61 6b 65 44 4e 53 2e | 63 0a 69 66 20 74 65 73 |makeDNS.|c.if tes|
|000047b0| 74 20 31 33 31 35 37 20 | 2d 6e 65 20 60 77 63 20 |t 13157 |-ne `wc |
|000047c0| 2d 63 20 3c 6d 61 6b 65 | 44 4e 53 2e 63 60 3b 20 |-c <make|DNS.c`; |
|000047d0| 74 68 65 6e 0a 20 20 20 | 20 65 63 68 6f 20 73 68 |then. | echo sh|
|000047e0| 61 72 3a 20 5c 22 6d 61 | 6b 65 44 4e 53 2e 63 5c |ar: \"ma|keDNS.c\|
|000047f0| 22 20 75 6e 70 61 63 6b | 65 64 20 77 69 74 68 20 |" unpack|ed with |
|00004800| 77 72 6f 6e 67 20 73 69 | 7a 65 21 0a 66 69 0a 23 |wrong si|ze!.fi.#|
|00004810| 20 65 6e 64 20 6f 66 20 | 6f 76 65 72 77 72 69 74 | end of |overwrit|
|00004820| 69 6e 67 20 63 68 65 63 | 6b 0a 66 69 0a 69 66 20 |ing chec|k.fi.if |
|00004830| 74 65 73 74 20 2d 66 20 | 6d 61 6b 65 48 53 2e 63 |test -f |makeHS.c|
|00004840| 20 2d 61 20 22 24 7b 31 | 7d 22 20 21 3d 20 22 2d | -a "${1|}" != "-|
|00004850| 63 22 20 3b 20 74 68 65 | 6e 20 0a 20 20 65 63 68 |c" ; the|n . ech|
|00004860| 6f 20 73 68 61 72 3a 20 | 57 69 6c 6c 20 6e 6f 74 |o shar: |Will not|
|00004870| 20 6f 76 65 72 2d 77 72 | 69 74 65 20 65 78 69 73 | over-wr|ite exis|
|00004880| 74 69 6e 67 20 66 69 6c | 65 20 5c 22 6d 61 6b 65 |ting fil|e \"make|
|00004890| 48 53 2e 63 5c 22 0a 65 | 6c 73 65 0a 65 63 68 6f |HS.c\".e|lse.echo|
|000048a0| 20 73 68 61 72 3a 20 45 | 78 74 72 61 63 74 69 6e | shar: E|xtractin|
|000048b0| 67 20 5c 22 6d 61 6b 65 | 48 53 2e 63 5c 22 20 5c |g \"make|HS.c\" \|
|000048c0| 28 37 38 39 20 63 68 61 | 72 61 63 74 65 72 73 5c |(789 cha|racters\|
|000048d0| 29 0a 73 65 64 20 22 73 | 2f 5e 58 2f 2f 22 20 3e |).sed "s|/^X//" >|
|000048e0| 6d 61 6b 65 48 53 2e 63 | 20 3c 3c 27 45 4e 44 5f |makeHS.c| <<'END_|
|000048f0| 4f 46 5f 6d 61 6b 65 48 | 53 2e 63 27 0a 58 2f 2a |OF_makeH|S.c'.X/*|
|00004900| 20 43 6f 70 79 20 73 74 | 64 69 6e 20 74 6f 20 73 | Copy st|din to s|
|00004910| 74 64 6f 75 74 2c 20 73 | 75 62 73 74 69 74 75 74 |tdout, s|ubstitut|
|00004920| 69 6e 67 20 61 6e 79 20 | 25 73 20 66 6f 72 20 74 |ing any |%s for t|
|00004930| 68 65 20 63 75 72 72 65 | 6e 74 20 74 69 6d 65 73 |he curre|nt times|
|00004940| 74 61 6d 70 0a 58 20 2a | 20 28 68 61 63 6b 65 64 |tamp.X *| (hacked|
|00004950| 20 6f 75 74 20 6f 66 20 | 6d 61 6b 65 44 4e 53 2e | out of |makeDNS.|
|00004960| 63 29 2e 20 20 54 68 65 | 20 69 64 65 61 20 69 73 |c). The| idea is|
|00004970| 20 74 68 61 74 20 74 68 | 65 20 48 53 2d 63 6c 61 | that th|e HS-cla|
|00004980| 73 73 20 68 65 61 64 65 | 72 20 73 68 6f 75 6c 64 |ss heade|r should|
|00004990| 0a 58 20 2a 20 6a 75 73 | 74 20 24 49 4e 43 4c 55 |.X * jus|t $INCLU|
|000049a0| 44 45 20 61 6e 79 74 68 | 69 6e 67 20 69 74 20 6e |DE anyth|ing it n|
|000049b0| 65 65 64 73 2c 20 77 68 | 69 63 68 20 77 69 6c 6c |eeds, wh|ich will|
|000049c0| 20 68 61 76 65 20 62 65 | 65 6e 20 67 65 6e 65 72 | have be|en gener|
|000049d0| 61 74 65 64 20 73 65 70 | 61 72 61 74 65 6c 79 2e |ated sep|arately.|
|000049e0| 0a 58 20 2a 2f 0a 58 0a | 58 23 69 6e 63 6c 75 64 |.X */.X.|X#includ|
|000049f0| 65 20 3c 73 74 64 69 6f | 2e 68 3e 0a 58 23 69 6e |e <stdio|.h>.X#in|
|00004a00| 63 6c 75 64 65 20 3c 73 | 79 73 2f 74 79 70 65 73 |clude <s|ys/types|
|00004a10| 2e 68 3e 0a 58 23 69 6e | 63 6c 75 64 65 20 3c 73 |.h>.X#in|clude <s|
|00004a20| 79 73 2f 74 69 6d 65 2e | 68 3e 0a 58 23 69 6e 63 |ys/time.|h>.X#inc|
|00004a30| 6c 75 64 65 20 3c 74 69 | 6d 65 2e 68 3e 0a 58 0a |lude <ti|me.h>.X.|
|00004a40| 58 23 64 65 66 69 6e 65 | 20 4c 49 4e 45 42 55 46 |X#define| LINEBUF|
|00004a50| 46 45 52 20 31 32 30 0a | 58 23 64 65 66 69 6e 65 |FER 120.|X#define|
|00004a60| 20 4c 4f 47 20 22 2f 64 | 65 76 2f 74 74 79 22 0a | LOG "/d|ev/tty".|
|00004a70| 58 0a 58 69 6e 74 20 6d | 61 69 6e 28 29 0a 58 7b |X.Xint m|ain().X{|
|00004a80| 09 74 69 6d 65 5f 74 20 | 74 74 3b 0a 58 09 73 74 |.time_t |tt;.X.st|
|00004a90| 72 75 63 74 20 74 6d 20 | 2a 74 74 6d 3b 0a 58 09 |ruct tm |*ttm;.X.|
|00004aa0| 63 68 61 72 20 2a 74 3b | 0a 58 09 63 68 61 72 20 |char *t;|.X.char |
|00004ab0| 73 74 61 6d 70 5b 32 30 | 5d 3b 0a 58 09 63 68 61 |stamp[20|];.X.cha|
|00004ac0| 72 20 62 75 66 66 65 72 | 5b 4c 49 4e 45 42 55 46 |r buffer|[LINEBUF|
|00004ad0| 46 45 52 5d 3b 0a 58 0a | 58 09 74 74 20 3d 20 74 |FER];.X.|X.tt = t|
|00004ae0| 69 6d 65 28 4e 55 4c 4c | 29 3b 0a 58 09 74 74 6d |ime(NULL|);.X.ttm|
|00004af0| 20 3d 20 6c 6f 63 61 6c | 74 69 6d 65 28 26 74 74 | = local|time(&tt|
|00004b00| 29 3b 0a 58 09 28 76 6f | 69 64 29 20 73 70 72 69 |);.X.(vo|id) spri|
|00004b10| 6e 74 66 28 73 74 61 6d | 70 2c 20 22 25 64 25 33 |ntf(stam|p, "%d%3|
|00004b20| 2e 33 64 25 33 2e 33 64 | 22 2c 0a 58 09 09 74 74 |.3d%3.3d|",.X..tt|
|00004b30| 6d 2d 3e 74 6d 5f 79 65 | 61 72 2c 20 74 74 6d 2d |m->tm_ye|ar, ttm-|
|00004b40| 3e 74 6d 5f 79 64 61 79 | 2c 0a 58 09 09 28 28 36 |>tm_yday|,.X..((6|
|00004b50| 30 20 2a 20 74 74 6d 2d | 3e 74 6d 5f 68 6f 75 72 |0 * ttm-|>tm_hour|
|00004b60| 29 20 2b 20 74 74 6d 2d | 3e 74 6d 5f 6d 69 6e 29 |) + ttm-|>tm_min)|
|00004b70| 20 3e 3e 20 31 29 3b 0a | 58 09 74 20 3d 20 61 73 | >> 1);.|X.t = as|
|00004b80| 63 74 69 6d 65 28 74 74 | 6d 29 3b 0a 58 0a 58 09 |ctime(tt|m);.X.X.|
|00004b90| 28 76 6f 69 64 29 20 70 | 72 69 6e 74 66 28 22 3b |(void) p|rintf(";|
|00004ba0| 3b 20 47 65 6e 65 72 61 | 74 65 64 20 6f 6e 20 25 |; Genera|ted on %|
|00004bb0| 73 5c 6e 22 2c 20 74 29 | 3b 0a 58 0a 58 09 66 6f |s\n", t)|;.X.X.fo|
|00004bc0| 72 20 28 3b 3b 29 20 7b | 0a 58 09 09 69 66 20 28 |r (;;) {|.X..if (|
|00004bd0| 66 67 65 74 73 28 62 75 | 66 66 65 72 2c 20 4c 49 |fgets(bu|ffer, LI|
|00004be0| 4e 45 42 55 46 46 45 52 | 2c 20 73 74 64 69 6e 29 |NEBUFFER|, stdin)|
|00004bf0| 20 3d 3d 20 4e 55 4c 4c | 29 20 62 72 65 61 6b 3b | == NULL|) break;|
|00004c00| 0a 58 09 09 28 76 6f 69 | 64 29 20 70 72 69 6e 74 |.X..(voi|d) print|
|00004c10| 66 28 62 75 66 66 65 72 | 2c 20 73 74 61 6d 70 29 |f(buffer|, stamp)|
|00004c20| 3b 0a 58 09 7d 0a 58 09 | 72 65 74 75 72 6e 20 30 |;.X.}.X.|return 0|
|00004c30| 3b 0a 58 7d 0a 45 4e 44 | 5f 4f 46 5f 6d 61 6b 65 |;.X}.END|_OF_make|
|00004c40| 48 53 2e 63 0a 69 66 20 | 74 65 73 74 20 37 38 39 |HS.c.if |test 789|
|00004c50| 20 2d 6e 65 20 60 77 63 | 20 2d 63 20 3c 6d 61 6b | -ne `wc| -c <mak|
|00004c60| 65 48 53 2e 63 60 3b 20 | 74 68 65 6e 0a 20 20 20 |eHS.c`; |then. |
|00004c70| 20 65 63 68 6f 20 73 68 | 61 72 3a 20 5c 22 6d 61 | echo sh|ar: \"ma|
|00004c80| 6b 65 48 53 2e 63 5c 22 | 20 75 6e 70 61 63 6b 65 |keHS.c\"| unpacke|
|00004c90| 64 20 77 69 74 68 20 77 | 72 6f 6e 67 20 73 69 7a |d with w|rong siz|
|00004ca0| 65 21 0a 66 69 0a 23 20 | 65 6e 64 20 6f 66 20 6f |e!.fi.# |end of o|
|00004cb0| 76 65 72 77 72 69 74 69 | 6e 67 20 63 68 65 63 6b |verwriti|ng check|
|00004cc0| 0a 66 69 0a 69 66 20 74 | 65 73 74 20 2d 66 20 75 |.fi.if t|est -f u|
|00004cd0| 70 64 61 74 65 44 4e 53 | 20 2d 61 20 22 24 7b 31 |pdateDNS| -a "${1|
|00004ce0| 7d 22 20 21 3d 20 22 2d | 63 22 20 3b 20 74 68 65 |}" != "-|c" ; the|
|00004cf0| 6e 20 0a 20 20 65 63 68 | 6f 20 73 68 61 72 3a 20 |n . ech|o shar: |
|00004d00| 57 69 6c 6c 20 6e 6f 74 | 20 6f 76 65 72 2d 77 72 |Will not| over-wr|
|00004d10| 69 74 65 20 65 78 69 73 | 74 69 6e 67 20 66 69 6c |ite exis|ting fil|
|00004d20| 65 20 5c 22 75 70 64 61 | 74 65 44 4e 53 5c 22 0a |e \"upda|teDNS\".|
|00004d30| 65 6c 73 65 0a 65 63 68 | 6f 20 73 68 61 72 3a 20 |else.ech|o shar: |
|00004d40| 45 78 74 72 61 63 74 69 | 6e 67 20 5c 22 75 70 64 |Extracti|ng \"upd|
|00004d50| 61 74 65 44 4e 53 5c 22 | 20 5c 28 32 32 32 20 63 |ateDNS\"| \(222 c|
|00004d60| 68 61 72 61 63 74 65 72 | 73 5c 29 0a 73 65 64 20 |haracter|s\).sed |
|00004d70| 22 73 2f 5e 58 2f 2f 22 | 20 3e 75 70 64 61 74 65 |"s/^X//"| >update|
|00004d80| 44 4e 53 20 3c 3c 27 45 | 4e 44 5f 4f 46 5f 75 70 |DNS <<'E|ND_OF_up|
|00004d90| 64 61 74 65 44 4e 53 27 | 0a 58 23 21 20 2f 62 69 |dateDNS'|.X#! /bi|
|00004da0| 6e 2f 73 68 0a 58 63 64 | 20 2f 76 61 72 2f 6e 61 |n/sh.Xcd| /var/na|
|00004db0| 6d 65 64 2e 50 72 69 6d | 61 72 79 0a 58 2f 75 73 |med.Prim|ary.X/us|
|00004dc0| 72 2f 6c 6f 63 61 6c 2f | 65 74 63 2f 6d 61 6b 65 |r/local/|etc/make|
|00004dd0| 44 4e 53 0a 58 65 63 68 | 6f 20 22 55 70 64 61 74 |DNS.Xech|o "Updat|
|00004de0| 65 20 44 4e 53 20 64 61 | 74 61 62 61 73 65 22 0a |e DNS da|tabase".|
|00004df0| 58 69 66 20 5b 20 24 3f | 20 21 3d 20 30 20 5d 20 |Xif [ $?| != 0 ] |
|00004e00| 3b 20 74 68 65 6e 0a 58 | 09 65 78 69 74 0a 58 66 |; then.X|.exit.Xf|
|00004e10| 69 0a 58 2f 62 69 6e 2f | 63 70 20 4e 65 77 2f 7a |i.X/bin/|cp New/z|
|00004e20| 6f 6e 65 2e 2a 20 2e 0a | 58 69 66 20 5b 20 24 3f |one.* ..|Xif [ $?|
|00004e30| 20 21 3d 20 30 20 5d 20 | 3b 20 74 68 65 6e 0a 58 | != 0 ] |; then.X|
|00004e40| 09 65 78 69 74 0a 58 66 | 69 0a 58 65 63 68 6f 20 |.exit.Xf|i.Xecho |
|00004e50| 22 52 65 6c 6f 61 64 20 | 44 4e 53 20 73 65 72 76 |"Reload |DNS serv|
|00004e60| 65 72 22 0a 58 6b 69 6c | 6c 20 2d 48 55 50 20 60 |er".Xkil|l -HUP `|
|00004e70| 63 61 74 20 2f 65 74 63 | 2f 6e 61 6d 65 64 2e 70 |cat /etc|/named.p|
|00004e80| 69 64 60 0a 45 4e 44 5f | 4f 46 5f 75 70 64 61 74 |id`.END_|OF_updat|
|00004e90| 65 44 4e 53 0a 69 66 20 | 74 65 73 74 20 32 32 32 |eDNS.if |test 222|
|00004ea0| 20 2d 6e 65 20 60 77 63 | 20 2d 63 20 3c 75 70 64 | -ne `wc| -c <upd|
|00004eb0| 61 74 65 44 4e 53 60 3b | 20 74 68 65 6e 0a 20 20 |ateDNS`;| then. |
|00004ec0| 20 20 65 63 68 6f 20 73 | 68 61 72 3a 20 5c 22 75 | echo s|har: \"u|
|00004ed0| 70 64 61 74 65 44 4e 53 | 5c 22 20 75 6e 70 61 63 |pdateDNS|\" unpac|
|00004ee0| 6b 65 64 20 77 69 74 68 | 20 77 72 6f 6e 67 20 73 |ked with| wrong s|
|00004ef0| 69 7a 65 21 0a 66 69 0a | 63 68 6d 6f 64 20 2b 78 |ize!.fi.|chmod +x|
|00004f00| 20 75 70 64 61 74 65 44 | 4e 53 0a 23 20 65 6e 64 | updateD|NS.# end|
|00004f10| 20 6f 66 20 6f 76 65 72 | 77 72 69 74 69 6e 67 20 | of over|writing |
|00004f20| 63 68 65 63 6b 0a 66 69 | 0a 65 63 68 6f 20 73 68 |check.fi|.echo sh|
|00004f30| 61 72 3a 20 45 6e 64 20 | 6f 66 20 73 68 65 6c 6c |ar: End |of shell|
|00004f40| 20 61 72 63 68 69 76 65 | 2e 0a 65 78 69 74 20 30 | archive|..exit 0|
|00004f50| 0a | |. | |
+--------+-------------------------+-------------------------+--------+--------+